Khoảng giá
Từ: 0 triệu
Đến: Không giới hạn
SKIN 3M FOR LENS SIGMA DC 18-50mm F2.8 DN (C) FOR CANON RF
Vui lòng gọi
Miếng dán bảo vệ màn hình TC-SL1 Screen Protector
Vui lòng gọi
SKIN 3M FOR LENS SIGMA 24-70mm F2.8 DG DN (ART) FOR SONY
Đơn giá
250,000đ
SKIN 3M FOR LENS SONY FE 24-70mm F2.8 GM
Đơn giá
250,000đ
SKIN 3M FOR LENS TAMRON 28-75mm F2.8 DI III RXD FOR SONY
Đơn giá
250,000đ
SKIN 3M FOR LENS SONY FE 50mm F1.4 GM
Đơn giá
250,000đ
SKIN 3M FOR SONY ALPHA A7 MARK III
Đơn giá
400,000đ
SKIN 3M FOR NIKON Z6 II
Đơn giá
400,000đ
SKIN 3M FOR NIKON Z5
Đơn giá
400,000đ
SKIN 3M FOR NIKON D850
Đơn giá
400,000đ
SKIN 3M FOR NIKON D750
Đơn giá
400,000đ
SKIN 3M FOR SONY ALPHA A6600
Đơn giá
400,000đ
SKIN 3M FOR SONY ALPHA A6500
Đơn giá
400,000đ
SKIN 3M FOR SONY ALPHA A6400
Đơn giá
400,000đ
SKIN 3M FOR SONY ALPHA A7 MARK IV
Đơn giá
400,000đ
SKIN 3M FOR CANON EOS 6D MARK II
Đơn giá
400,000đ
SKIN 3M FOR CANON EOS RP
Đơn giá
400,000đ
SKIN 3M FOR CANON EOS 5D MARK III
Đơn giá
400,000đ
SKIN 3M FOR SONY ALPHA A7R MARK IV
Đơn giá
400,000đ
SKIN 3M FOR PANASONIC LUMIX S5 MARK II X
Đơn giá
400,000đ
SKIN 3M FOR SONY ALPHA A7R MARK III
Đơn giá
400,000đ
Cường Lực Cuely cho Canon EOS R6/R7
Đơn giá
50,000đ
Cường Lực Cuely cho Sony A5000/A6000/A6300/A6400/A6500
Đơn giá
50,000đ
Cường Lực Cuely cho Nikon Z / Lumix S
Đơn giá
50,000đ
Cường Lực Cuely cho Sony A7 Mark IV
Đơn giá
50,000đ
Cường Lực Cuely cho Canon EOS 6DII/7DII/xxD/xxxD
Đơn giá
50,000đ
Cường lực Cuely cho Sony A7series/RX100
Đơn giá
50,000đ
Skin 3M cho Lens Nikon Z 24-70mm F4S
Đơn giá
250,000đ
Skin 3M cho Lens Nikon Z 28-75mm F2.8S
Đơn giá
250,000đ
Skin 3M cho Lens Nikon Z 50mm F1.8S
Đơn giá
250,000đ
Skin 3M cho Lens Nikon Z 50mm F1.2S
Skin 3M cho Lens Nikon Z 85mm F1.8S
Skin 3M cho Lens Nikon Z 35mm F1.8S
Skin 3M cho Lens Nikon Z 70-200mm F2.8 VR S
SKIN 3M FOR LENS CARL ZEISS T* BATIS 25mm F2 FOR SONY
SKIN 3M FOR TAMRON 28-75mm F2.8 DI III VXD G2 FOR SONY
SKIN 3M FOR LENS SONY FE 50mm F1.8
SKIN 3M FOR LENS SONY FE 16-35mm F2.8 GM
SKIN 3M FOR SONY SONNAR T* FE 55mm F1.8 ZA
SKIN 3M FOR LENS SIGMA DC 18-50mm F2.8 DN (C) FOR SONY
SKIN 3M FOR LENS SIGMA DC 18-50mm F2.8 DN (C) FOR FUJIFILM
SKIN 3M FOR LENS SIGMA 85mm F1.4 DG DN (ART) FOR SONY
SKIN 3M FOR TOKINA 85mm F1.8 FE FOR SONY
SKIN 3M FOR SONY DISTAGON T* FE 35mm F1.4 ZA
SKIN 3M FOR LENS SONY FE 35mm F2.8 ZEISS
SKIN 3M FOR LENS LUMIX 50mm F1.8 S
SKIN 3M FOR LENS SONY FE 85mm F1.4 GM
SKIN 3M FOR LENS TAMRON 17-70mm F2.8 DI III-A VC RXD FOR SONY
SKIN 3M FOR LENS SONY FE 50mm F1.2 GM
SKIN 3M FOR LENS SONY FE 24-70mm F2.8 GM II
SKIN 3M FOR LENS SONY PLANAR T * FE 50mm F1.4 ZA
SKIN 3M FOR TAMRON 17-28mm F2.8 DI III RXD FOR SONY
SKIN 3M FOR LENS SIGMA 35mm F1.4 DG DN (ART) FOR SONY
SKIN 3M FOR LENS SIGMA DC 30mm F1.4 DN (C) FOR SONY
SKIN 3M FOR LENS SIGMA 35mm F2 DG DN (C) FOR SONY
SKIN 3M FOR LENS SIGMA 28-70mm F2.8 DG DN (C) FOR SONY
SKIN 3M FOR LUMIX 12-35mm F2.8
SKIN 3M FOR MEIKE 85mm F1.8 FOR SONY E-MOUNT
SKIN 3M FOR LENS TAMRON 35-150mm F2-2.8 DI III VXD FOR SONY
SKIN 3M FOR VILTROX AF 24mm F1.8 STM ASPH ED IF FOR SONY
SKIN 3M FOR VILTROX AF 50mm F1.8 STM ASPH ED IF FOR SONY
SKIN 3M FOR TAMRON 35mm F2.8 DI III OSD M 1:2 FOR SONY E
SKIN 3M FOR LENS SONY FE 24-70mm F4 ZA OSS
SKIN 3M FOR LENS VILTROX AF 16mm F1.8 FE FOR SONY E
SKIN 3M FOR LENS SIGMA 50mm F1.4 DG DN (ART) FOR SONY
SKIN 3M FOR LENS SIGMA 50mm F1.4 DG HSM (ART) FOR SONY E
SKIN 3M FOR LENS TAMRON 70-180 F2.8 DI III VXD FOR SONY
SKIN 3M FOR CARL ZEISS T* BATIS 85mm F1.8 FOR SONY
SKIN 3M FOR LENS SONY FE 28-70mm F3.5-5.6 OSS
SKIN 3M FOR LENS SONY ZEISS T* FE 24-70mm F4 ZA OSS
SKIN 3M FOR LENS SIGMA DC 56mm F1.4 DN (C) FOR SONY
SKIN 3M FOR LENS SIGMA DC 16mm F1.4 DN (C) FOR SONY
SKIN 3M FOR LENS SONY FE 35mm F1.8
SKIN 3M FOR LENS SONY E PZ 18-105mm F4 G OSS
SKIN 3M FOR TAMRON 20-40mm F2.8 FOR SONY
SKIN 3M FOR SONY SONNAR T* FE 35mm F2.8 ZA
SKIN 3M FOR LENS LUMIX 12-60mm F3.5-5.6
SKIN 3M FOR LENS SONY VARIO-TESSAR T* FE 16-35mm F4 ZA OSS ZEISS
SKIN 3M FOR LUMIX 14-24mm F3.5-5.6
SKIN 3M FOR LENS SONY E 50mm F1.8 OSS
SKIN 3M FOR SONY ZV-1
SKIN 3M FOR LENS LUMIX S 20-60mm F3.5-5.6
SKIN 3M FOR LENS LUMIX S PRO 16-35mm F4
SKIN 3M FOR LENS SONY FE 85mm F1.8
SKIN 3M FOR SONY ALPHA A7C MARK II
SKIN 3M FOR SONY ALPHA A7S MARK III
SKIN 3M FOR SONY ALPHA A6700
SKIN 3M FOR SONY ALPHA A7
Skin 3M cho Body Canon EOS R6 Mark II
Skin 3M cho Body Canon EOS R5
Skin 3M cho Body Canon EOS R5 Mark II
Skin 3M cho Body Canon EOS R
Skin 3M cho Body Canon EOS RP
Skin 3M cho Body Nikon Z6/ Z6 mark II
Skin 3M cho Body Nikon Z5/ Z5 mark II
Skin 3M cho Body Nikon Z7/ Z7 mark II
SKIN 3M FOR CANON EOS R6
SKIN 3M FOR SONY FX-30
SKIN 3M FOR SONY ALPHA A6000
SKIN 3M FOR PANASONIC LUMIX S5
SKIN 3M FOR SONY FX-30B
SKIN 3M FOR SONY ALPHA A9
SKIN 3M FOR PANASONIC LUMIX GH5
SKIN 3M FOR SONY ALPHA A7S MARK II
SKIN 3M FOR SONY ALPHA A7R MARK II
SKIN 3M FOR SONY ALPHA A7C
SKIN 3M FOR SONY ZV-E10
SKIN 3M FOR PANASONIC LUMIX S1
SKIN 3M FOR SONY ALPHA A6300
SKIN 3M FOR SONY ALPHA A7 MARK II
SKIN LENS SIGMA 70-200mm F2.8 DG DN OS SPORTS FOR SONY
SKIN 3M FOR LENS SONY FE 70-200mm F2.8 GM OSS II
SKIN 3M FOR LENS SONY FE 70-200mm F2.8 GM OSS
(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());
})();