Khoảng giá
Từ: 0 triệu
Đến: Không giới hạn
Gimbal INKEE Falcon Plus Cho Camera Hành Động
Vui lòng gọi
Gimbal BEXIN H5
Vui lòng gọi
GIMBAL CHỐNG RUNG AOCHUAN SMART XE
Vui lòng gọi
GIMBAL ĐIỆN THOẠI SMART X PRO
Vui lòng gọi
CHÂN ĐÈN (ĐEN) 2M1
Vui lòng gọi
1M GIẤY TẢN SÁNG MỸ SAVAGE
Vui lòng gọi
ĐÈN LED E.PRO UL-500BI COLOR 2700-6500K
Vui lòng gọi
Hắt sáng 2 trong 1 110cm
Đơn giá
250,000đ
Chóa đèn 21cm góc rộng ngàm Bowen
Giá từ:
250,000đ
Hắt Sáng Cong Chụp Chân Dung (kèm chân)
Đơn giá
1,070,000đ
TRỤC XÍCH 3
Đơn giá
1,150,000đ
TRỤC MOTOR 2
Đơn giá
1,200,000đ
TRỤC XÍCH 4
Đơn giá
1,400,000đ
TRỤC XÍCH 5
Đơn giá
1,600,000đ
TRỤC XÍCH 6
Đơn giá
1,800,000đ
BỘ TRỤC XÍCH DI ĐỘNG
Giá từ:
1,200,000đ
TRỤC MOTOR 5
Đơn giá
3,000,000đ
Tản sáng Flash Vuông
Đơn giá
50,000đ
Ring Adapter for softbox
Đơn giá
150,000đ
Ring Softbox For Bowen, Jinbei, Photon, Solo
Đơn giá
170,000đ
Hắt sáng 2 trong 1 80cm
Đơn giá
170,000đ
Softbox 20x30cm for speedlite
Đơn giá
180,000đ
Hắt sáng 5 trong 1 80cm
Đơn giá
220,000đ
Gird softbox 60x90cm
Đơn giá
270,000đ
Gird softbox bát giác 95cm
Đơn giá
270,000đ
Hắt sáng 5 trong 1 110cm
Đơn giá
280,000đ
Softbox 50-70 hạt mưa
Đơn giá
280,000đ
Gird softbox bát giác 120cm
Đơn giá
310,000đ
Softbox 60x60cm hạt mưa
Đơn giá
330,000đ
Softbox 20-100 hạt mưa
Đơn giá
350,000đ
Softbox 80x100cm hạt mưa
Softbox 45x45cm tổ ong
Softbox 20-100 tổ ong - Rectangular Softbox with Cloth Honeycomb 20cm x 100 cm
Softbox bát giác 95cm
Softbox bát giác 140cm
Hắt Sáng Cong Chụp Chân Dung
SOFTBOX PARAPOLIC EPRO QS-90 CÓ TỔ ONG
SOFTBOX PARABOLIC E-PRO 90CM CÓ TỔ ONG
TRỤC MOTOR 3
TRỤC MOTOR 4
TRỤC MOTOR 6
Softbox 90x90cm hạt mưa
Bộ Tạo Hiệu Ứng Nghệ Thuật OT1 Max ( 40 độ)
Bộ Tạo Hiệu Ứng Nghệ Thuật OT1 Max ( 20 độ)
Thanh Nhôm Cuốn Phông 3m
Chân đen 2M8
Chân Inox 2M5
Phông giấy loại 2
Chân Inox 2M2
Chân Inox 2M8
Phông giấy loại 1
Phông giấy cao cấp
ĐÈN VIDEO LIGHT LED-5080
ĐÈN LED VIDEOLIGHT ZF-3000
ĐÈN LED YN 900 II
(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());
})();