Khoảng giá
Từ: 0 triệu
Đến: Không giới hạn
Đèn Godox LA200D Daylight LED Light 230W
Giá giao động:
5,400,000đ
ĐÈN STUDIO GODOX DP-600II
HÀNG MỚI ĐÃ TẠM HẾT
Đèn Flash Studio Godox DP600III-V
Giá giao động:
3,890,000đ
Đèn Flash Studio Godox DP800III-V
Giá từ:
5,200,000đ
Đèn Godox LA150 Daylight LED Light
Giá giao động:
3,980,000đ
Đèn Godox LA150Bi Bi-Color LED Light
Giá giao động:
4,640,000đ
Đèn Studio Godox DP600III
Giá giao động:
3,940,000đ
Đèn LED Godox VL200
Giá giao động:
9,790,000đ
Bộ đèn Godox 300 SDI-D
Giá giao động:
7,790,000đ
Đèn LED Godox LC500R
Giá giao động:
3,980,000đ
Godox SL 100W (GOSL100W)
Giá giao động:
3,980,000đ
Đèn Godox LA200 Bi-Color LED Light 230W
Giá giao động:
5,580,000đ
Đèn LED Godox SL100Bi
Giá giao động:
3,500,000đ
ĐÈN NANLITE PAVOTUBE T8-7X 1 KIT
Vui lòng gọi
ĐÈN GODOX QS-1200 II
Vui lòng gọi
ĐÈN GODOX QS-800 II
Vui lòng gọi
ĐÈN GODOX QS-800 III
Vui lòng gọi
ĐÈN STUDIO GODOX DP-1000III
Vui lòng gọi
ĐÈN STUDIO GODOX VL-300
Vui lòng gọi
ĐÈN STUDIO GODOX VL-150
Vui lòng gọi
ĐÈN STUDIO GODOX DP-800III
Vui lòng gọi
ĐÈN STUDIO GODOX QT-1200IIIM
Vui lòng gọi
ĐÈN STUDIO GODOX QT-400IIIM
Vui lòng gọi
ĐÈN STUDIO GODOX SL-60II BI
Vui lòng gọi
ĐÈN STUDIO GODOX DP-800II
Vui lòng gọi
ĐÈN LED GODOX ML-60
Vui lòng gọi
ĐÈN STUDIO GODOX SL-60II D
Vui lòng gọi
ĐÈN STUDIO GODOX QT-600IIIM
Vui lòng gọi
Đèn Flash Studio Godox SK300 II
Vui lòng gọi
ĐÈN STUDIO GODOX DP-1000III V
Vui lòng gọi
ĐÈN STUDIO GODOX DP-400II
ĐÈN GIẢ NẮNG SPOTLIGHT 1000W
ĐÈN STUDIO GODOX QT-400 II
ĐÈN LED GODOX MS-300
Đầu Đèn Nối Dài Cho AD200 EC-200 Chính Hãng Godox
ĐÈN LED VIDEO GODOX LF308
Đèn Godox LED1000Bi II
Đèn LED Godox SL200W II
ĐÈN LED GODOX SL200 III
ĐÈN LED RGB GODOX SZ 150R
Bộ đèn Godox MS300 Studio Flash Kit (MS300II-D)
Đèn Flash studio Godox DP400III-V
Đèn LED Godox quay phim LED1000 C-Y-W
Đèn Godox KNOWLED M600Bi Bi-Color LED Monolight
Godox SL 60W (GOSL60W)
Đèn LED chụp hình Godox - LEDP260C
Đèn Flash Godox QS300II
Đèn LED Godox SL100D
Đèn Studio Godox DP400III
Godox SL 150W (GOSL150W)
Đèn LED Godox SL300W II
Godox SL 200W (GOSL200W)
(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());
})();