Khoảng giá
Từ: 0 triệu
Đến: Không giới hạn
ĐÈN FLASH GODOX V1 FOR NIKON
Đèn Flash Godox V1 cho Nikon
Đèn Flash Godox V1 cho Sony
Đơn giá
3,450,000đ
Đế gắn phụ kiện tản sáng Godox (S-R1)
Đơn giá
130,000đ
Choá đèn chớp Godox cho dòng AD600 (AD-R6)
Đơn giá
180,000đ
Softbox adapter cho ngàm Bowens SA-01-BW
Đơn giá
300,000đ
Túi đựng đèn Godox AD600 (PB-600)
Đơn giá
300,000đ
Sạc pin cho đèn flash V860 – VC18
Đơn giá
380,000đ
Đế đỡ Godox S2 – Type
Đơn giá
450,000đ
Điều khiển Godox XT-16
Đơn giá
800,000đ
Đầu đèn nối dài cho AD200 (EC200)
Đơn giá
960,000đ
Đầu gắn đèn kéo dài cho Godox AD600 (AD-H600B)
Đơn giá
1,200,000đ
Bộ phát không dây TTL Godox XPRO (For Canon)
Đơn giá
1,300,000đ
Bộ chuyển đổi điện AC-DC Godox AD600
Đơn giá
1,600,000đ
Bộ đổi nguồn AC26 cho đèn Godox AD600 Pro
Đơn giá
2,380,000đ
Pin sạc Godox WB87 cho Godox AD600B/BM
Đơn giá
2,380,000đ
Đèn Flash Godox V1 cho Canon
Đơn giá
3,450,000đ
Đèn Flash Godox V1 cho Fujifilm
Đơn giá
3,450,000đ
Đèn Flash Godox QS400II
Đơn giá
3,480,000đ
Pin cho AD600pro (WB-26)
Đơn giá
3,600,000đ
Đèn Flash Godox QS600II
Đơn giá
4,200,000đ
Đèn Flash Godox QT400IIM
Đơn giá
6,800,000đ
Pin Godox WB30P cho đèn AD300 Pro
Đơn giá
7,990,000đ
Đèn Flash Godox QT1200IIM
Đèn Flash Godox AD600 Pro
Đơn giá
14,200,000đ
Chóa đèn Godox AD-R12 cho dòng AD300 Pro / AD400 Pro
Vui lòng gọi
ĐÈN FLASH GODOX TT350 FOR NIKON
Vui lòng gọi
ĐÈN FLASH GODOX TT350 FOR CANON
Vui lòng gọi
ĐÈN FLASH GODOX TT600
Vui lòng gọi
ĐÈN FLASH GODOX TT685 II FOR NIKON
ĐÈN FLASH GODOX TT685 II FOR CANON
ĐÈN FLASH GODOX TT685 II FOR SONY
ĐÈN FLASH GODOX TT685 FOR SONY
ĐÈN FLASH GODOX TT685 FOR NIKON
ĐÈN FLASH GODOX V1 FOR FUJIFILM
ĐÈN FLASH GODOX V860 II FOR FUJIFILM
ĐÈN FLASH GODOX V860 II FOR CANON
ĐÈN FLASH GODOX V860 II FOR NIKON
ĐÈN FLASH GODOX V860 II FOR LUMIX
ĐÈN FLASH GODOX AD-100 PRO
ĐÈN FLASH GODOX TT350 FOR FUJIFILM
ĐÈN FLASH GODOX AD-200
ĐÈN GODOX TT520II
ĐÈN FLASH GODOX TT685 II FOR FUJIFILM
ĐÈN FLASH GODOX TT685 FOR FUJIFILM
ĐÈN GODOX RETRO LUX JUNIOR
ĐÈN FLASH GODOX V860 III FOR LUMIX
ĐÈN FLASH GODOX V1 FOR OLYMPUS
ĐÈN FLASH GODOX V1 FOR LUMIX
ĐÈN FLASH GODOX TT685 FOR CANON
ĐÈN FLASH GODOX ML-100 BI
TẢN SÁNG GODOX AK-R11
LED FLASH HEAD FOR AD200
NGÀM TẢN SÁNG GODOX S-R1
TẢN SÁNG GODOX AK-R12
TẢN SÁNG GODOX AK-R22
BỘ TẢN SÁNG ĐÈN FLASH GODOX AK-R1
ĐÈN FLASH GODOX TT350 FOR SONY
ĐÈN FLASH GODOX V860 III FOR SONY
ĐÈN FLASH GODOX V860 III FOR CANON
ĐÈN FLASH GODOX V860 III FOR NIKON
Đèn flash Godox V860III For Fujifilm
ĐÈN FLASH GODOX V1 FOR CANON
ĐÈN FLASH MACRO GODOX MF12 - K2
ĐÈN FLASH GODOX V1 PRO FOR SONY
ĐÈN FLASH GODOX V1 PRO FOR CANON
ĐÈN FLASH GODOX V1 PRO FOR NIKON
Đèn Flash Godox - AD200 Pro II
Đèn Flash Godox AD600BM
ĐÈN FLASH GODOX AD300 PRO
Đèn Flash Godox QT600IIM
Pin cho Godox V1 (VB26)
Bộ Barndoor & Snoot Godox BD-10-SN-04 cho dòng AD300 Pro / AD400 Pro
Đầu đèn đôi Godox AD-B2
Đèn Flash GODOX V860II cho Canon
Đèn Flash GODOX V860II cho Nikon
Đèn Flash GODOX V860II cho Sony
Đèn Flash GODOX V860II cho Fujifilm
Đèn Flash GODOX AD200 PRO
(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());
})();