Khoảng giá
Từ: 0 triệu
Đến: Không giới hạn
Softbox bát giác Jinbei đường kính 20cm for speedlite
Đơn giá
140,000đ
Softbox bát giác Jinbei đường kính 30cm for speedlite
Đơn giá
230,000đ
Softbox JINBEI 60x60cm
Đơn giá
420,000đ
Softbox JINBEI 60x90cm
Đơn giá
480,000đ
Softbox JINBEI 70x100cm
Đơn giá
570,000đ
Softbox bát giác JINBEI M950
Đơn giá
620,000đ
Softbox JINBEI 80x120cm
Đơn giá
650,000đ
Softbox JINBEI 70x140cm
Đơn giá
650,000đ
Softbox bát giác JINBEI M1200
Đơn giá
740,000đ
Softbox bát giác JINBEI M1400
Đơn giá
900,000đ
Softbox tổ ong JINBEI EM 22x90cm
Đơn giá
950,000đ
Softbox Jinbei thao tác nhanh KE 60X90
Đơn giá
1,000,000đ
Softbox tổ ong JINBEI EM 60x90cm
Đơn giá
1,000,000đ
Beauty disk BD 60cm softbox Jinbei - Bowens mount
Đơn giá
1,090,000đ
Softbox tổ ong JINBEI EM 35x140cm
Đơn giá
1,150,000đ
Beauty disk BD 80cm softbox Jinbei - Bowens mount
Đơn giá
1,190,000đ
Softbox dù jinbei 60x90cm
Đơn giá
1,250,000đ
Softbox tổ ong JINBEI EM 80x120cm
Đơn giá
1,250,000đ
Softbox Xéo 70x110cmm JINBEI
Đơn giá
1,300,000đ
Softbox tổ ong Godox 140cm
Đơn giá
1,300,000đ
Softbox Cầu Jinbel 85cm
Đơn giá
1,300,000đ
Softbox dù jinbei 70x100cm
Đơn giá
1,350,000đ
Softbox dù Jinbei bát giác K90
Đơn giá
1,400,000đ
Softbox dù Beauty Dish Jinbei 65cm
Đơn giá
1,400,000đ
Softbox dù Jinbei bát giác K120
Đơn giá
1,600,000đ
Softbox Jinbei thao tác nhanh KE 90 cm deep
Đơn giá
1,650,000đ
Softbox dù Jinbei 90cm
Đơn giá
1,680,000đ
Softbox dù Beauty Dish Jinbei 85cm
Đơn giá
1,690,000đ
Softbox dù Beauty Dish Jinbei 105cm
Đơn giá
1,890,000đ
Softbox dù Jinbei bát giác K150
Đơn giá
1,890,000đ
Softbox dù Jinbei 120cm
SOFTBOX THAO TÁC NHANH JINBEI KE-90 CÓ TỔ ONG
Softbox Cầu Jinbei 100cm
Jinbei Parabolic softbox 16k Direct - Bowens mount - Đường kính 90cm
Softbox Jinbei thao tác nhanh KE 120 cm deep
Softbox Cầu Jinbei 120cm ( kèm vải đèn trùm)
Softbox đánh ngược Jinbei 90cm tổ ông và bộ zoom focus
Softbox đánh ngược Jinbei 120cm tổ ông và bộ zoom focus
(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());
})();