Trang chủ
>
cage >
cage SMALLRIG
SmallRig Cage cho Fujifilm X-T30 và X-T20 Camera - CCF2356
MỚI 100%
Đơn giá:
1,940,000đ
Giảm: 0đ
1,940,000đ
Hotline đặt hàng:
0937148222
(08:00-20:00)
KHUYẾN MÃI ÁP DỤNG TỪ
đến
Thông số nổi bật
SmallRig Cage cho Fujifilm X-T30 và X-T20 với chất liệu nhôm siêu nhẹ và bền bỉ, giúp bảo vệ máy ảnh của bạn tối ưu, tránh va đập và hao mòn. Được tích hợp nhiều dạng kết nối như lỗ ren 1/4 inch, 3/8 inch, đường ray NATO cho phép gắn các phụ kiện hỗ trợ cho máy ảnh.
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ố
SmallRig L-Bracket cho máy ảnh Nikon Z6/ Z6 II/ Z7/ Z7 II - 2258
Đơn giá
1,480,000đ
SmallRig Tay cầm cho ZHIYUN CRANE 2S – 3005
Đơn giá
1,376,000đ
SmallRig Cage cho máy ảnh Nikon Z50- CCN2499
Đơn giá
1,201,000đ
SmallRig Master Kit for Sony Alpha 7S III A7S III A7S3 - 3009
Đơn giá
3,200,000đ
SmallRig Cage cho Canon 5D Mark III IV - CCC2271
Đơn giá
2,460,000đ
SmallRig Full Camera Cage for Sony A7RIV/ A7IV/ A7SIII/ A1/ A7RIV/ A7RV - 3667B
Vui lòng gọi
SmallRig Handgrip cho DJI RS 2 / RSC 2 / RS 3 / RS 3 Pro - 3028
Vui lòng gọi
SMALLRIG CAGE FOR NIKON Z8
Giá từ:
1,800,000đ
SMALLRIG CAGE FOR NIKON Z6 III - 4519
Đơn giá
2,190,000đ
SmallRig Cage cho Blackmagic Design Pocket Cinema Camera 4K & 6K - 2203
Đơn giá
1,355,000đ
SmallRig Cage cho FUJIFILM X-H2/X-H2S - 3934
Đơn giá
1,850,000đ
SmallRig NATO Ngàm gắn phụ kiện cho DJI RS 2 / RSC 2 / RS 3 / RS 3 Pro – 3025
Đơn giá
393,000đ
SmallRig Bộ tuốc nơ vít gấp - TC2400
Đơn giá
522,000đ
SmallRig Cage cho Nikon Z5/Z6/Z7/Z6II/Z7II Camera – 2926
Đơn giá
1,243,000đ
SmallRig Cage cho Fujifilm X-T2 và X-T3 Camera - 2228
Đơn giá
2,980,000đ
SmallRig Cage cho Fujifilm X-T30 và X-T20 với chất liệu nhôm siêu nhẹ và bền bỉ, giúp bảo vệ máy ảnh của bạn tối ưu, tránh va đập và hao mòn. Được tích hợp nhiều dạng kết nối như lỗ ren 1/4 inch, 3/8 inch, đường ray NATO cho phép gắn các phụ kiện hỗ trợ cho máy ảnh.
Tags
×
1 / 5
(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());
})();