Khoảng giá
Từ: 0 triệu
Đến: Không giới hạn
Máy ảnh Fujifilm X-T3 ww(Black, Body Only,USB Charging) | Chính hãng
Giá giao động:
26,990,000đ
Máy ảnh Fujifilm X-T30 Mark II (Silver, Body Only) | Chính hãng
Giá giao động:
26,490,000đ
Máy ảnh Fujifilm X-T200 (Black, Body Only) | Chính hãng
Giá từ:
15,990,000đ
Máy ảnh Fujifilm X-T200 (Champagne Gold, Body Only) | Chính hãng
Giá từ:
15,500,000đ
Máy ảnh Fujifilm X-H2S ( Body Only) | Chính hãng
Giá từ:
50,000,000đ
Máy ảnh Fujifilm X-T5 | Chính Hãng
Máy ảnh Fujifilm X-Pro2 Body Only | Chính Hãng
Vui lòng gọi
Máy ảnh Fujifilm XF10 (Gold) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X-T100 (Dark Silver, Body Only) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X-T100 (Champagne Gold, Body Only) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X-A7 (Silver, Body Only) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X-A7 (Mint, Body Only) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X-A7 (Camel, Body Only) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X-A7 (Navy Blue, Body Only) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm GFX 100 (Body) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X-T200 (Champagne Gold, Body Only)
Vui lòng gọi
Máy ảnh Fujifilm GFX 50S (Body) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X-H1 (Body Only) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X-T200 (Dark Silver, Body Only) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X-E3 (Black, Body Only) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X100F (Black) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm SHARE SP-2 (Black) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X-E3 (Silver, Body Only) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X100F (Silver) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm X100F (Brown) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm instax mini 9 (Clear Yellow) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm instax mini 9 (Pink) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm instax mini 9 (Lime Green) | Chính hãng
Vui lòng gọi
Máy ảnh Fujifilm instax mini 9 (Smokey White) | Chính hãng
Vui lòng gọi
MÁY ẢNH FUJIFILM X-E2
Vui lòng gọi
Máy ảnh Fujifilm X-T1
Máy ảnh Fujifilm X-Pro3 Body Only (Dura Silver) | Chính hãng
MÁY ẢNH FUJIFILM X-E1
Máy ảnh Fujifilm X100VI (Black) | Chính hãng
Máy ảnh Fujifilm X-T100 (Black, Body Only) | Chính hãng
Máy ảnh Fujifilm X-T200 (Dark Silver, Body Only)
Máy in ảnh Fujifilm instax SHARE SP-2 (Gold) | Chính hãng
Máy in ảnh Fujifilm Instax Mini Link (Dark Denim) | Chính Hãng
Máy ảnh Fujifilm Instax Mini LiPlay (Stone White) | Chính hãng
Máy ảnh Fujifilm Instax Mini LiPlay (Blush Gold) | Chính hãng
MÁY ẢNH FUJIFILM INSTAX MINI EVO (BLACK)
Máy ảnh Fujifilm X-T30 (Black, Body Only) | Chính hãng
Máy ảnh Fujifilm X-T30 (Silver, Body Only) | Chính hãng
Máy ảnh Fujifilm X-E4 (Silver, Body Only)
Máy ảnh Fujifilm X-E4 (Black, Body Only)
Máy ảnh Fujifilm X-S10 (Black, Body Only) | Chính hãng
Máy ảnh Fujifilm X-T30 Mark II (Black, Body Only) | Chính hãng
Máy Ảnh Fujifilm X-T4 (Silver, Body Only) | Chính hãng
Máy ảnh Fujifilm X-T4 (Black, Body Only) | Chính hãng
MÁY ẢNH FUJIFILM X-T50
Máy ảnh Fujifilm X-S20
Máy ảnh Fujifilm X-T5 (Silver) | Chính Hãng
MÁY ẢNH FUJIFILM X100V
Máy ảnh Fujifilm X-H2 | Chính Hãng
Máy ảnh Fujifilm GFX 50S Mark II (Body Only) | Chính hãng
Máy ảnh Fujifilm GFX 50R (Body) | Chính hãng
Máy ảnh Fujifilm GFX 100S
Máy ảnh Fujifilm GFX 100 II
Máy ảnh Fujifilm X-T20 ( Body Only, Black ) | Chính hãng
Máy ảnh Fujifilm X-T20 ( Body Only, Silver ) | Chính hãng
Máy Ảnh Fujifilm X-T4 (Black, Body Only)
Máy Ảnh Fujifilm X-T4 (Silver, Body Only)
Máy ảnh Fujifilm instax SQUARE SQ10 | Chính Hãng
Máy ảnh Fujifilm FinePix XP130 (Silver) | Chính hãng
Máy ảnh Fujifilm X-A7 (Dark Silver, Body Only) | Chính hãng
Máy ảnh Fujifilm FinePix XP140 (White) | Chính Hãng
Máy ảnh Fujifilm X-T10 | Chính hãng
Máy ảnh Fujifilm X-T2 (Body Only) | Chính hãng
MÁY ẢNH FUJIFILM X-A3
MÁY ẢNH FUJIFILM X-A20
MÁY ẢNH FUJIFILM X-A10
MÁY ẢNH FUJIFILM X-A2
MÁY ẢNH FUJIFILM X-A5
Máy ảnh Fujifilm Instax Mini 25
Máy ảnh Fujifilm FinePix XP140 (Lime) | Chính Hãng
Máy ảnh Fujifilm FinePix XP140 (Yellow) | Chính Hãng
Máy ảnh Fujifilm FinePix XP130 (White) |Chính hãng
Máy ảnh Fujifilm FinePix XP130 (Yellow) | Chính hãng
Máy ảnh Fujifilm FinePix XP130 (Lime) | Chính hãng
Máy ảnh Fujifilm FinePix XP130 (Sky Blue) | Chính hãng
Máy ảnh Fujifilm X-T3 (Silver, Body Only,USB Charging) | Chính hãng
(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());
})();