Khoảng giá
Từ: 0 triệu
Đến: Không giới hạn
Softbox adapter cho ngàm Bowens SA-01-BW
Đơn giá
300,000đ
SOFTBOX THAO TÁC NHANH JINBEI KE-25×100 GRID
Vui lòng gọi
GODOX SMART SOFTBOX 60X60CM WITH GODOX S SHAPE ADAPTER SFUV6060
Vui lòng gọi
SOFTBOX GODOX 60X60CM CÓ TỔ ONG
Vui lòng gọi
SOFTBOX GODOX 30X120CM
Đơn giá
550,000đ
Softbox Godox 60x90cm
Đơn giá
550,000đ
Dù Parabolic Godox UB-85, UB-105, UB-130, UB-165
Đơn giá
680,000đ
SOFTBOX GODOX 60X60CM NGÀM BOWEN
Đơn giá
690,000đ
SOFTBOX TỔ ONG GODOX 22X90CM
Đơn giá
690,000đ
SOFTBOX GODOX 80X120
Đơn giá
700,000đ
SOFTBOX FLASH GODOX 80X80
Đơn giá
750,000đ
SOFTBOX TỔ ONG GODOX 60X90CM
Đơn giá
790,000đ
SOFTBOX GODOX TỔ ONG 80X120
Đơn giá
950,000đ
SOFTBOX DÙ GODOX 80CM CÓ TỔ ONG
Đơn giá
1,050,000đ
SOFTBOX DÙ GODOX PORTABLE BOWEN MOUNT G120CM TỔ ONG
Đơn giá
1,350,000đ
SOFTBOX GODOX OCTA 120CM
Đơn giá
1,350,000đ
SOFTBOX GODOX BÁT GIÁC 120CM TỔ ONG
Đơn giá
1,350,000đ
SOFTBOX CẦU JINBEI CS-85
Đơn giá
1,350,000đ
SOFTBOX PARABOLIC THAO TÁC NHANH TRIOPO KP2-90 NGÀM BOWEN
Đơn giá
1,500,000đ
SOFTBOX CẦU NICEFOTO 85CM
Đơn giá
1,600,000đ
SOFTBOX PARABOLIC JINBEI DEEP 90CM
Đơn giá
1,650,000đ
SOFTBOX DRAGON PARABOLIC 90 CM SOFTBOX 16K DIRECT - BOWENS MOUNT
Đơn giá
1,680,000đ
SOFTBOX DRAGON PARABOLIC 120CM 16 CẠNH KHÔNG TỔ ÔNG
Đơn giá
1,850,000đ
SOFTBOX THAO TÁC NHANH JINBEI KE-90
Đơn giá
1,900,000đ
SOFTBOX THAO TÁC NHANH JINBEI KE-120 CM
Đơn giá
1,900,000đ
SOFTBOX GODOX PARABOLIC QR-P90T
Đơn giá
1,950,000đ
SOFTBOX GODOX PARABOLIC QR-P120T
Đơn giá
2,700,000đ
SOFTBOX GODOX QR-P120
Đơn giá
2,750,000đ
SOFTBOX GODOX PARABOLIC QR-P120
Đơn giá
2,750,000đ
SOFTBOX NANLITE PARAPOLIC 90CM CÓ TỔ ONG
Đơn giá
3,550,000đ
SOFTBOX NANLITE PARABOLIC 120CM KHÔNG TỔ ONG
Ring softbox Adapter for Jinbei, Hylow, F, Bowens....
Dù xuyên Translucent Umbrella Godox UB-008
Lưới làm dịu sáng và giúp ánh sáng đi thẳng Godox - P90G 90cm
Softbox Godox 60x60cm
Lưới làm dịu sáng và giúp ánh sáng đi thẳng Godox - P120G 120cm
Softbox Godox Octagon Bát Giác 95cm
Godox S7 48cm Foldable Softbox Octagon Umbrella Diffuser Reflector Photo Lighting Kit for WITSTRO AD360 AD180 AD200 Speedlight
Softbox Tổ Ong Godox 22X90
Softbox Godox Octagon Bát Giác 140cm
Sofbox Tổ Ong Godox 30X120
Softbox dù Godox Bát giác 80cm
Softbox tổ ong Godox 35x160cm
Softbox dù Dragon bát giác 120cm
SOFTBOX DÙ GODOX PORTABLE BOWEN MOUNT 120CM
Softbox Cầu Godox 50cm CS-50D Collapsible Lantern
SOFTBOX CẦU NANLITE LT-65
Softbox Cầu Jinbel 65cm
Softbox Cầu Godox 65cm CS-65D Collapsible Lantern Softbox
SOFTBOX DÙ PORTABLE BOWEN MOUNT 80CM TỔ ONG
SOFTBOX GODOX OCTA BÁT GIÁC 95CM TỔ ONG
SOFTBOX GODOX BOWENS MOUNT OCTA 120CM
Softbox hình cầu Godox CS85D
SOFTBOX DÙ GODOX PORTABLE BOWEN MOUNT 120CM TỔ ONG
Softbox Parabolic Godox P90L
Softbox Godox AD-S85W
Softbox Godox QR-P70 Quick Parabolic with Bowens Mount
SOFTBOX GODOX QR-P90 CÓ TỔ ONG
Godox PF-R870 Thanh Focusing
Softbox Godox Parabolic Light Focusing System Reflector P88 Kit
Softbox Godox Parabolic Light Focusing System Reflector P68 Kit
Softbox Godox Parabolic Light Focusing System Reflector P128 Kit
Godox P120G Grid cho Parabolic Softbox 120cm
Softbox Godox SB-BW-95
Softbox Godox SB-BW-120
Softbox Godox SB-FW-60x90
Softbox Godox SB-FW-95
Softbox Godox SB-BW-80x120
Softbox Godox SGGV 60x60
SOFTBOX dù bát giác ngàm Bowens - SB-GUE 120cm
(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());
})();