Trang chủ
>
Phụ kiện khác >
Phụ kiện khác NIKON
Nikon MC-36A Remote Control Unit
MỚI 100%
Hotline đặt hàng:
0903.148-222
(08:00-20:00)
KHUYẾN MÃI ÁP DỤNG TỪ
đến
Thông số nổi bật
- Bộ điều khiển từ xa Nikon MC-36A chính hãng – tích hợp hẹn giờ chụp - Hỗ trợ phơi sáng, chụp liên tục, chụp hẹn giờ với nhiều tùy chỉnh chính xác - Dành cho các máy Nikon có cổng 10-pin như D850, D6, D810, D5... - Thiết kế chắc chắn, màn hình hiển thị LCD dễ thao tác, dây dài linh hoạt
Tổng quan
Sản Phẩm khác
Sản Phẩm cũ
Tính Năng
Sản phẩm bao gồm
Thông số
Webcam Insta360 Link + Tripod Kit | Chính Hãng
Vui lòng gọi
Peak Design PL-S-2 - Standard Plate
Đơn giá
1,890,000đ
Peak Design Capture Camera Clip V3 (Silver) | Nhập khẩu
HÀNG MỚI ĐÃ TẠM HẾT
PGYTECH Protective Wrap (Geometry)
Đơn giá
420,000đ
PGYTECH Protective Wrap (Ethnic)
Đơn giá
420,000đ
PGYTECH Protective Wrap (Artist)
Đơn giá
420,000đ
PGYTECH Protective Wrap (Geek)
Đơn giá
420,000đ
PGYTECH Rain Cover 25L
Đơn giá
480,000đ
PGYTECH Mantis RC M1
Đơn giá
490,000đ
Webcam Insta360 Link
Vui lòng gọi
Ổ cắm điện ELPA ESU-VNI43 (4 ổ điện, 5 công tắc, 3m, 2xUSB)
Đơn giá
389,000đ
Ổ cắm điện ELPA ESU-VNC53 (5 ổ điện, 1 công tắc, 3m, 2xUSB)
Đơn giá
389,000đ
Ống kính 7Artisans Mobile Wide-Angle (Black) | Chính Hãng
Vui lòng gọi
Ống kính 7Artisans Mobile Fisheye (Black) | Chính Hãng
Vui lòng gọi
Phụ kiện 7Artisans Filter Holder for 12mm f/2.8 Lens
Vui lòng gọi
- Bộ điều khiển từ xa Nikon MC-36A chính hãng – tích hợp hẹn giờ chụp - Hỗ trợ phơi sáng, chụp liên tục, chụp hẹn giờ với nhiều tùy chỉnh chính xác - Dành cho các máy Nikon có cổng 10-pin như D850, D6, D810, D5... - Thiết kế chắc chắn, màn hình hiển thị LCD dễ thao tác, dây dài linh hoạt
Tags
×
1 / 1
(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());
})();