MÁY ẢNH CANON EOS R100 (HÃNG)
Giá giao động:
11,500,000đ
Máy ảnh Canon EOS R6 Mark II (Body only)
Giá giao động:
41,900,000đ
Máy ảnh Canon EOS R8 (Body Only)
Giá giao động:
28,000,000đ
MÁY ẢNH CANON EOS R5 MARK II (CHÍNH HÃNG)
Giá giao động:
97,000,000đ
Máy ảnh Canon EOS 5D Mark IV (Body Only)
HÀNG MỚI ĐÃ TẠM HẾT
Hàng cũ giá từ:
15,000,000đ
Máy ảnh Canon EOS 6D Mark II (Body Only)
HÀNG MỚI ĐÃ TẠM HẾT
Hàng cũ giá từ:
15,500,000đ
MÁY ẢNH CANON EOS-1DX
HÀNG MỚI ĐÃ TẠM HẾT
Hàng cũ giá từ:
16,000,000đ
Máy ảnh Canon EOS 90D (Nhập khẩu,Body Only)
Giá từ:
21,000,000đ
Máy ảnh Canon EOS 5DS R
HÀNG MỚI ĐÃ TẠM HẾT
MÁY ẢNH CANON EOS R50 (ĐEN) KÈM LENS RF-S 18-45MM
Giá giao động:
17,990,000đ
Máy ảnh Canon EOS R3 (Body Only)
Giá giao động:
83,000,000đ
Máy ảnh Canon EOS R (Body only)
HÀNG MỚI ĐÃ TẠM HẾT
Máy ảnh Canon EOS RP (Body Only)
Giá từ:
13,500,000đ
MÁY ẢNH CANON EOS R7 | Chính Hãng
Giá từ:
24,000,000đ
Máy ảnh Canon EOS M50 Mark II (Black) + Kit 15-45mm f/3.5-6.3 IS STM
Vui lòng gọi
Máy ảnh Canon EOS R7 (Body only)
Giá từ:
24,500,000đ
Máy ảnh Canon EOS R6 (Body Only)
Giá từ:
36,000,000đ
Máy ảnh Canon PowerShot G7 X Mark III (Black)
Giá giao động:
30,000,000đ
Máy ảnh Canon EOS R5 (Body only)
Máy ảnh Canon EOS M50 Mark II (Black) + Lens Canon EF-M 55-200mm f/4.5-6.3 IS STM
Vui lòng gọi
Máy ảnh Canon EOS M50 Mark II (Body Only) - Black
Vui lòng gọi
Máy ảnh Canon PowerShot G5 X Mark II
Vui lòng gọi
Máy ảnh Canon EOS R6 Mark III Body
Vui lòng gọi
Máy Ảnh Canon PowerShot V1 | Chính Hãng
Vui lòng gọi
Máy Ảnh Canon EOS R50 V + Lens 14-30mm f/4-6.3 (Black) | Chính Hãng
Vui lòng gọi
Máy Ảnh Canon EOS RP kit RF 24-105mm F4-7.1 IS STM
Vui lòng gọi
CANON EOS-1DS MARK III
Vui lòng gọi
Máy Ảnh Canon EOS 4000D
Vui lòng gọi
Máy ảnh Canon EOS R1 (Body)
Vui lòng gọi
Máy ảnh Canon EOS M200 + Lens EF-M 15-45mm f/3.5-6.3
Vui lòng gọi
Máy ảnh Canon EOS M100 + Lens EF-M 15-45mm F3.5-6.3
Canon EOS 300D (EOS Digital Rebel / EOS Kiss Digital)
Máy ảnh Canon EOS RP (Body Only) (Nhập Khẩu)
Máy ảnh Canon EOS R100 + Lens 18-45mm | Chính Hãng
Máy ảnh Canon EOS M50 Mark II (Body Only) - White
Máy ảnh Canon EOS M6 | Chính hãng
MÁY ẢNH CANON EOS R50 (TRẮNG) KÈM LENS RF-S 18-45MM
Máy ảnh Canon EOS R10 (Body Only)
Máy ảnh Canon EOS M6 Mark II
Máy ảnh Canon EOS 77D (Body Only)
MÁY ẢNH CANON EOS 200D MARK II
MÁY ẢNH CANON EOS 400D
MÁY ẢNH CANON EOS 1000D
MÁY ẢNH CANON EOS REBEL T7
MÁY ẢNH CANON EOS 250D
MÁY ẢNH CANON EOS REBEL XSI
MÁY ẢNH CANON POWER SHOT A2300
MÁY ẢNH CANON EOS 550D
MÁY ẢNH CANON EOS 450D
MÁY ẢNH CANON EOS 1300D
MÁY ẢNH Canon EOS 350D
MÁY ẢNH CANON EOS 1100D
MÁY ẢNH CANON EOS 40D
MÁY ẢNH CANON EOS 30D
Máy ảnh Canon EOS 600D
Máy ảnh Canon EOS 60D
MÁY ẢNH CANON EOS 50D
Máy ảnh Canon EOS 700D
MÁY ẢNH CANON EOS 760D
MÁY ẢNH CANON EOS 7D MARK II
Máy ảnh Canon EOS 800D (Body Only)
MÁY ẢNH CANON EOS KISS X2
MÁY ẢNH CANON EOS 1D MARK III
MÁY ẢNH CANON EOS 1D MARK IV
Máy ảnh Canon EOS 7D ( Canon 7D )
Máy ảnh Canon EOS-1D X Mark III
MÁY ẢNH CANON EOS KISS DIGITAL N
MÁY ẢNH CANON EOS REBEL T3
MÁY ẢNH CANON POWERSHOT D10
MÁY ẢNH CANON EOS 500D
MÁY ẢNH CANON EOS 5D
MÁY ẢNH CANON EOS 100D
Máy ảnh Canon EOS 70D ( Body Only) | Chính hãng
Máy ảnh Canon EOS 3000D (Body Only) | Chính hãng
MÁY ẢNH CANON EOS M10
MÁY ẢNH CANON EOS-1DS MARK II DIGTAL
Máy ảnh Canon EOS M3 | Chính Hãng
Máy ảnh Canon PowerShot SX740 HS (Silver)
MÁY ẢNH CANON EOS 750D
Máy Ảnh Canon PowerShot SX740 HS (Black)
Máy ảnh Canon EOS M50 + Lens 15-45mm ( Black)
MÁY ẢNH CANON EOS M50
Máy ảnh Canon EOS 80D | Chính hãng
Máy ảnh Canon EOS M5 | Chính hãng
Máy ảnh Canon EOS 6D | Chính hãng
Máy ảnh Canon EOS 5D Mark II
Máy ảnh Canon EOS 5D Mark III | Chính hãng
MÁY ẢNH CANON EOS-1DX MARK II
MÁY ẢNH CANON EOS-1DX MARK III
(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());
})();