Khoảng giá
Từ: 0 triệu
Đến: Không giới hạn
ỐNG KÍNH VILTROX AF 85mm F1.8 STM ED (IF) FOR NIKON Z (CHÍNH HÃNG)
Giá giao động:
8,500,000đ
ỐNG KÍNH VILTROX AF 50mm F1.8 STM ASPH ED (IF) FOR NIKON Z
Giá giao động:
5,500,000đ
Ống kính AF Viltrox 56mm F/1.7 For Nikon Z
Giá giao động:
3,500,000đ
Ống kính Viltrox AF 75mm F1.2 XF STM ED IF for Fujifilm X-mount
Vui lòng gọi
Ống kính Viltrox AF 50mm f/1.8 For Nikon Z | Chính hãng
Giá giao động:
5,500,000đ
Ống kính Viltrox AF 85mm f/1.8 FE II For Sony FE | Chính hãng
Giá giao động:
7,380,000đ
ỐNG KÍNH VILTROX AF 20mm F2.8 STM ED (IF) FOR SONY
Vui lòng gọi
ỐNG KÍNH VILTROX AF 13mm F1.4 FOR SONY E (CHÍNH HÃNG )
Vui lòng gọi
ỐNG KÍNH VILTROX AF 33mm F1.4 STM ED IF FOR SONY
Vui lòng gọi
ỐNG KÍNH VILTROX AF 23mm F1.4 II STM ED (IF) FOR FUJIFILM X
Vui lòng gọi
ỐNG KÍNH VILTROX AF 75mm F1.2 PRO STM ED (IF) FOR NIKON Z
Vui lòng gọi
Viltrox AF 27mm f/1.2 STM ED IF Lens for Fuji X
Vui lòng gọi
Ống Kính Viltrox AF 135mm F/1.8 FE For Sony
Vui lòng gọi
Ống Kính Viltrox AF 35mm f/1.2 LAB Sony E - Mới
Vui lòng gọi
ỐNG KÍNH VILTROX AF 16mm F1.8 STM ASPH ED (IF) FOR SONY
Vui lòng gọi
ỐNG KÍNH VILTROX AF 56mm F1.4 STM ASPH ED (IF) FOR NIKON Z
Vui lòng gọi
ỐNG KÍNH VILTROX AF 23mm F1.4 STM ED (IF) FOR FUJIFILM X
Vui lòng gọi
ỐNG KÍNH VILTROX AF 13mm F1.4 XF FOR FUJIFILM
Vui lòng gọi
ỐNG KÍNH VILTROX AF 33mm F1.4 STM ED IF FOR FUJIFILM
Vui lòng gọi
Ống kính Viltrox AF 28mm F/4.5 VCM for Sony Fullframe
Giá giao động:
2,300,000đ
Ống Kính Viltrox AF 56mm f/1.7 XF For Fujifilm X
Giá giao động:
3,490,000đ
Viltrox AF 40mm F2.5 Full-Frame cho Sony E-mount
Giá giao động:
3,490,000đ
Ống kính Viltrox 40mm F/2.5 for Nikon Z
Giá giao động:
3,490,000đ
ỐNG KÍNH VILTROX AF 20mm F2.8 STM ED (IF) FOR NIKON Z
Giá giao động:
3,490,000đ
ỐNG KÍNH VILTROX AF 56mm F1.7 APS-C FOR SONY E-MOUNT
Giá giao động:
3,500,000đ
Viltrox AF 35mm f/1.7 XF for Fujifilm X
Giá giao động:
3,900,000đ
ỐNG KÍNH VILTROX AF 24mm F1.8 STM ASPH ED (IF) FOR NIKON Z
Ống kính Viltrox AF 33mm f/1.4 STM ED IF For Canon M | Chính hãng
Giá giao động:
5,390,000đ
Ống kính Viltrox AF 33mm f/1.4 STM ED IF For Sony E | Chính hãng
Giá giao động:
5,500,000đ
ỐNG KÍNH VILTROX AF 50mm F1.8 STM ASPH ED (IF) FOR SONY
Giá giao động:
5,500,000đ
Ống kính Viltrox AF 33mm f/1.4 STM ED IF For Fujifilm X | Chính hãng
ỐNG KÍNH VILTROX AF 56mm F1.4 STM ASPH ED (IF) FOR SONY
ỐNG KÍNH VILTROX AF 23mm F1.4 STM ED (IF) FOR SONY
ỐNG KÍNH VILTROX AF 23mm F1.4 STM ED (IF) FOR NIKON Z
ỐNG KÍNH VILTROX AF 56mm F1.4 STM ASPH ED (IF) FOR FUJIFILM
Ống kính AF Viltrox 33mm F1.4 Z For Nikon Z
Ống kính Viltrox AF 23mm f/1.4 STM ED IF For Canon M | Chính hãng
Ống kính Viltrox AF 56mm F1.4 STM ED IF cho Canon M
ỐNG KÍNH VILTROX AF 35mm F1.8 STM ASPH ED (IF) FOR SONY
ỐNG KÍNH VILTROX AF 35mm F1.8 STM ASPH ED (IF) FOR NIKON Z
ỐNG KÍNH VILTROX AF 24mm F1.8 STM ASPH ED (IF) FOR SONY
ỐNG KÍNH VILTROX AF 85M F/1.8 XF II FOR FUJIFILM (CHÍNH HÃNG)
Ống kính Viltrox AF 85mm f/1.8 XF II For Fujifilm X | Chính hãng
Ống kính Viltrox AF 24mm f/1.8 For Nikon Z | Chính hãng
ỐNG KÍNH VILTROX AF 85mm F1.8 II STM ED (IF) FOR SONY
ỐNG KÍNH VILTROX AF 85mm F1.8 II STM ED (IF) FOR SONY (HÃNG)
Viltrox AF 28mm F1.8 Full-Frame cho Sony E-Mount
Ống kính Viltrox AF 16mm f1.8 for Nikon Z
Ống Kính Viltrox AF 16mm F1.8 Z
ỐNG KÍNH VILTROX AF 75mm F1.2 PRO STM ED (IF) FOR FUJIFILM
ỐNG KÍNH VILTROX AF 75mm F1.2 PRO STM ED (IF) FOR SONY
Ống kính AF Viltrox 27mm f1.2 PRO For Nikon Z
Ống Kính Viltrox AF 135mm F1.8 Z
Ống kính Viltrox AF 85mm f/1.8 For Nikon Z | Chính Hãng
Ống kính Viltrox 35mm f/1.8 For Nikon Z | Chính hãng
Ống kính Viltrox 35mm f/1.8 For Sony E | Chính hãng
Ống kính Viltrox AF 24mm f/1.8 For Sony E | Chính hãng
Viltrox AF 85mm f/1.8 For Canon RF | Chính Hãng
Ống kính Viltrox AF 23mm f/1.4 STM ED IF For Sony E | Chính hãng
Ống kính Viltrox AF 56mm f/1.4 STM ED IF cho Fujifilm | Chính hãng
Ống kính Viltrox AF 56mm f/1.4 STM ED IF cho Sony E | Chính hãng
Ống kính Viltrox AF 50mm f/1.8 For Sony E | Chính hãng
Ống kính Viltrox 20mm f/1.8 For Sony E | Chính Hãng
Ống kính Viltrox 20mm f/1.8 For Nikon Z | Chính Hãng
ỐNG KÍNH VILTROX AF 85mm F1.8 STM ED (IF) FOR CANON RF
Ống kính Viltrox AF 13mm f/1.4 for Nikon Z
(function () {
const requestAnimFrame = (function () {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function (callback) {
window.setTimeout(callback, 1000 / 60);
};
})();
const hieuUngPhaoHoa = {
canvas: document.getElementById('hieuUngPhaoHoa__canvas'),
ctx: null,
cw: window.innerWidth,
ch: window.innerHeight,
fireworks: [],
particles: [],
colors: [0, 60, 300], // Mảng các màu
hue: 0,
timerTotal: 30, // Giảm thời gian giữa các lần bắn
timerTick: 0,
isActive: true, // Biến để kiểm soát trạng thái hoạt động
init: function () {
this.ctx = this.canvas.getContext('2d');
this.canvas.width = this.cw;
this.canvas.height = this.ch;
this.loop();
// Tự động dừng sau 5 giây
setTimeout(() => {
this.isActive = false;
}, 5000);
},
calculateDistance: function (p1x, p1y, p2x, p2y) {
const xDistance = p1x - p2x;
const yDistance = p1y - p2y;
return Math.sqrt(Math.pow(xDistance, 2) + Math.pow(yDistance, 2));
},
random: function (min, max) {
return Math.random() * (max - min) + min;
},
createParticles: function (x, y) {
let particleCount = 30;
// Chọn màu ngẫu nhiên từ mảng
this.hue = this.colors[Math.floor(Math.random() * this.colors.length)];
while (particleCount--) {
this.particles.push(new Particle(x, y, this));
}
},
// Main loop
loop: function () {
if (!this.isActive && this.fireworks.length === 0 && this.particles.length === 0) {
return; // Dừng animation khi hết pháo hoa
}
requestAnimFrame(this.loop.bind(this));
this.hue += 0.5;
this.ctx.globalCompositeOperation = 'destination-out';
this.ctx.fillStyle = 'rgba(0, 0, 0, 0.5)';
this.ctx.fillRect(0, 0, this.cw, this.ch);
this.ctx.globalCompositeOperation = 'lighter';
let i = this.fireworks.length;
while (i--) {
this.fireworks[i].draw();
this.fireworks[i].update(i);
}
i = this.particles.length;
while (i--) {
this.particles[i].draw();
this.particles[i].update(i);
}
// Tự động bắn pháo hoa nếu đang hoạt động
if (this.isActive && this.timerTick >= this.timerTotal) {
this.fireworks.push(new Firework(
this.cw / 2, this.ch,
this.random(0, this.cw),
this.random(0, this.ch / 2),
this
));
this.timerTick = 0;
} else {
this.timerTick++;
}
}
};
// Firework class
class Firework {
constructor(sx, sy, tx, ty, main) {
this.main = main;
this.x = sx;
this.y = sy;
this.sx = sx;
this.sy = sy;
this.tx = tx;
this.ty = ty;
this.distanceToTarget = main.calculateDistance(sx, sy, tx, ty);
this.distanceTraveled = 0;
this.coordinates = [];
this.coordinateCount = 3;
while (this.coordinateCount--) {
this.coordinates.push([this.x, this.y]);
}
this.angle = Math.atan2(ty - sy, tx - sx);
this.speed = 2;
this.acceleration = 1.05;
this.brightness = main.random(50, 70);
this.targetRadius = 1;
}
update(index) {
this.coordinates.pop();
this.coordinates.unshift([this.x, this.y]);
if (this.targetRadius < 8) {
this.targetRadius += 0.3;
} else {
this.targetRadius = 1;
}
this.speed *= this.acceleration;
const vx = Math.cos(this.angle) * this.speed;
const vy = Math.sin(this.angle) * this.speed;
this.distanceTraveled = this.main.calculateDistance(
this.sx, this.sy, this.x + vx, this.y + vy
);
if (this.distanceTraveled >= this.distanceToTarget) {
this.main.createParticles(this.tx, this.ty);
this.main.fireworks.splice(index, 1);
} else {
this.x += vx;
this.y += vy;
}
}
draw() {
this.main.ctx.beginPath();
this.main.ctx.moveTo(
this.coordinates[this.coordinates.length - 1][0],
this.coordinates[this.coordinates.length - 1][1]
);
this.main.ctx.lineTo(this.x, this.y);
this.main.ctx.strokeStyle = `hsl(${this.main.hue}, 100%, ${this.brightness}%)`;
this.main.ctx.stroke();
}
}
// Particle class
class Particle {
constructor(x, y, main) {
this.main = main;
this.x = x;
this.y = y;
this.coordinates = [];
this.coordinateCount = 5;
while (this.coordinateCount--) {
this.coordinates.push([this.x, this.y]);
}
this.angle = main.random(0, Math.PI * 2);
this.speed = main.random(1, 10);
this.friction = 0.95;
this.gravity = 1;
this.hue = main.random(main.hue - 20, main.hue + 20);
this.brightness = main.random(50, 80);
this.alpha = 1;
this.decay = main.random(0.015, 0.03);
}
update(index) {
this.coordinates.pop();
this.coordinates.unshift([this.x, this.y]);
this.speed *= this.friction;
this.x += Math.cos(this.angle) * this.speed;
this.y += Math.sin(this.angle) * this.speed + this.gravity;
this.alpha -= this.decay;
if (this.alpha <= this.decay) {
this.main.particles.splice(index, 1);
}
}
draw() {
this.main.ctx.beginPath();
this.main.ctx.moveTo(
this.coordinates[this.coordinates.length - 1][0],
this.coordinates[this.coordinates.length - 1][1]
);
this.main.ctx.lineTo(this.x, this.y);
this.main.ctx.strokeStyle = `hsla(${this.hue}, 100%, ${this.brightness}%, ${this.alpha})`;
this.main.ctx.stroke();
}
}
// Khởi chạy khi trang load xong
window.addEventListener('load', () => hieuUngPhaoHoa.init());
})();