ỐNG KÍNH TAMRON 15-30mm F2.8 (SP) DI VC USD G2 FOR NIKON
HÀNG MỚI ĐÃ TẠM HẾT
Đơn giá hàng cũ
Vui lòng gọi
ỐNG KÍNH TAMRON 28-75mm F2.8 DI III RXD FOR SONY
HÀNG MỚI ĐÃ TẠM HẾT
Đơn giá hàng cũ
Vui lòng gọi
ỐNG KÍNH TAMRON 24-70mm F2.8 (SP) DI VC USD G2 FOR CANON
Giá giao động:
24,500,000đ
ỐNG KÍNH TAMRON 70-180mm F2.8 DI III VXD FOR SONY
Giá từ:
19,500,000đ
ỐNG KÍNH TAMRON 24-70mm F2.8 (SP) DI VC USD G2 FOR NIKON
Giá từ:
11,800,000đ
ỐNG KÍNH TAMRON 20-40mm F2.8 DI III VXD SONY E
Ống kính Tamron 28-75mm f/2.8 Di III RXD For Sony E | Chính hãng
Vui lòng gọi
ỐNG KÍNH TAMRON 35-150mm F2-2.8 DI III VXD FOR NIKON Z
Giá từ:
31,700,000đ
ỐNG KÍNH TAMRON 28-75mm F2.8 DI III VXD G2 FOR NIKON Z
Giá giao động:
19,500,000đ
Ống kính Tamron 28-75mm F2.8 Di III VXD G2 For Sony E | Chính hãng
ỐNG KÍNH TAMRON AF 28-300mm F3.5-6.3 XR DI (LD IF) FOR CANON
Vui lòng gọi
ỐNG KÍNH TAMRON 24-70mm F2.8 (SP) DI VC USD G1 FOR NIKON
Giá từ:
6,300,000đ
ỐNG KÍNH TAMRON SP 35mm F1.8 DI VC USD FOR NIKON
Vui lòng gọi
ỐNG KÍNH TAMRON SP 35mm F1.4 DI USD FOR CANON EF
Vui lòng gọi
ỐNG KÍNH TAMRON SP AF 17-50mm F2.8 XR DI II VC LD FOR CANON
Vui lòng gọi
ỐNG KÍNH TAMRON AF 100-300mm F5-6.3 FOR CANON
Vui lòng gọi
ỐNG KÍNH TAMRON 24-70mm F2.8 (SP) DI VC USD G1 FOR CANON
Vui lòng gọi
ỐNG KÍNH TAMRON 17-35mm F2.8-4 DI OSD FOR NIKON
Vui lòng gọi
ỐNG KÍNH TAMRON SP AF 24-135mm MACRO F3.5-5.6 AD (IF) FOR CANON
Giá từ:
1,990,000đ
ỐNG KÍNH TAMRON AF 18-200mm F3.5-6.3 IF MACRO FOR CANON
Vui lòng gọi
ỐNG KÍNH TAMRON 20mm F2.8 FOR SONY
Vui lòng gọi
ỐNG KÍNH TAMRON 15-30mm F2.8 (SP) DI VC USD G2 FOR CANON
Vui lòng gọi
ỐNG KÍNH TAMRON 35-150mm F2-2.8 DI III VXD FOR SONY
Giá từ:
28,700,000đ
TAMRON SP 70-200mm F2.8 DI VC USD G2 FOR NIKON
Vui lòng gọi
TAMRON SP AF 10-24mm F3.5-4.5 DI II FOR NIKON
Vui lòng gọi
Tamron 25-200mm f/2.8-5.6 Di III VXD G2 Lens (Sony E)
Vui lòng gọi
Ống kính Tamron AF 80-210mm F4.5-5.6 for Canon
Vui lòng gọi
Ống kính Tamron 10-24mm F3.5-4.5 Di II for Canon
Vui lòng gọi
Ống kính Tamron AF 18-270mm F3.5-6.3 Di II VC for Canon
Vui lòng gọi
Ống kính Tamron 16-30mm F2.8 Di III VXD G2 for Nikon Z
Vui lòng gọi
ỐNG KÍNH TAMRON 70-200mm F2.8 DI LD (IF) MACRO FOR NIKON
ỐNG KÍNH TAMRON AF 17-35mm F/2.8-4.0 DI LD SP ASPHERICAL FOR NIKON
Ống kính Tamron 17-50mm F/4 Di III VXD Sony
ỐNG KÍNH TAMRON 28-200mm F2.8-5.6 DI III RXD FOR SONY
ỐNG KÍNH TAMRON 70-180mm F2.8 DI III VC VXD G2 FOR SONY
ỐNG KÍNH TAMRON AF 28-75mm F2.8 XR DI LD ASPHERICAL (IF) MACRO FOR CANON
ỐNG KÍNH TAMRON 17-70mm F2.8 DI III-A VC RXD FOR FUJIFILM
Ống kính Tamron 70-180mm F/2.8 Di III VXD for Sony | Chính hãng
ỐNG KÍNH TAMRON 150-500mm F5-6.7 DI III VC VXD FOR SONY E-MOUNT
Ống kính Tamron 17-70mm f/2.8 Di III-A VC RXD for Sony E | Chính Hãng
Ống kính Tamron 17-70mm f/2.8 Di III-A VC RXD for Fujifilm X | Chính Hãng
Ống kính Tamron 11-20mm F/2.8 Di III-A For Sony E | Chính hãng
Ống kính Tamron 17-28mm f/2.8 Di III RXD For Sony | Chính hãng
Ống kính Tamron SP 24-70mm f/2.8 Di VC USD G2 For Canon EF | Chính hãng
Ống kính Tamron SP 24-70mm f/2.8 Di VC USD G2 For Nikon F | Chính hãng
Ống kính Tamron SP 24-70mm f/2.8 Di VC USD G2 For Canon EF | Nhập khẩu
Ống kính Tamron SP 24-70mm f/2.8 Di VC USD G2 For Nikon F | Nhập khẩu
Ống kính Tamron 35-150mm f/2-2.8 Di III VXD for Sony E | Chính hãng
ỐNG KÍNH TAMRON 70-300mm F4.5-6.3 DI III RXD FOR SONY
ỐNG KÍNH TAMRON AF 70-300mm F4-5.6 DI (LD) MACRO FOR CANON
ỐNG KÍNH TAMRON AF 17-50mm F2.8 XR DI II VC FOR CANON
ỐNG KÍNH TAMRON AF 17-50mm F2.8 XR DI II VC FOR NIKON
ỐNG KÍNH TAMRON AF 17-50mm F2.8 XR DI II FOR CANON (NON VC)
ỐNG KÍNH TAMRON 18-270mm F3.5-6.3 DI II VC FOR NIKON
ỐNG KÍNH TAMRON 17-35mm F2.8-4 DI OSD FOR CANON
ỐNG KÍNH TAMRON AF 28-75mm F2.8 DI MACRO FOR NIKON
ỐNG KÍNH TAMRON AF 70-300mm F4-5.6 DI (LD) MACRO FOR NIKON
ỐNG KÍNH TAMRON AF 17-50mm F2.8 XR DI II FOR NIKON (NON VC)
ỐNG KÍNH TAMRON AF 28-300mm F3.5-6.3 XR DI (LD IF) FOR NIKON
ỐNG KÍNH TAMRON 35mm F2.8 DI III OSD M 1:2 FOR SONY E
ỐNG KÍNH TAMRON AF 80-210mm F4.5-5.6 FOR NIKON
ỐNG KÍNH TAMRON SP AF DI 200-500mm F5-6.3 FOR NIKON
ỐNG KÍNH TAMRON SP 15-30mm F2.8 DI VC USD FOR CANON
Ống Kính Macro Tamron SP AF 90mm F2.8 DI 1:1 For Canon
ỐNG KÍNH TAMRON 35-150mm F2.8-4 DI VC OSD FOR CANON
ỐNG KÍNH TAMRON SP 150-600mm F5-6.3 DI VC USD G2 FOR NIKON F
ỐNG KÍNH TAMRON 24mm F2.8 DI III OSD M1:2 FOR SONY
(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());
})();