Khoảng giá
Từ: 0 triệu
Đến: Không giới hạn
CHÂN MÁY ẢNH BENRO SLIM TRIPOD FSL09-AN00
Đơn giá
1,980,000đ
MINI TRIPOD TR-02B
Đơn giá
60,000đ
CHÂN ĐIỆN THOẠI JOBY
Đơn giá
150,000đ
CHÂN ULANZI MT-79
Đơn giá
450,000đ
CHÂN MÁY ẢNH BENRO DIGITAL TRIPOD T560
Đơn giá
600,000đ
CHÂN GẤP NGƯỢC
Đơn giá
750,000đ
Chân máy Benro KH26P Video Head & Tripod Kit
Đơn giá
4,380,000đ
CHÂN MÁY ẢNH TRIPOD VELBON CARMAGNE G5300
HÀNG MỚI ĐÃ TẠM HẾT
Hàng cũ giá từ:
2,600,000đ
TRIPOD INSTA 360 2IN1 INVISIBLE SELFIE STICK
HÀNG MỚI ĐÃ TẠM HẾT
CHÂN BENRO TT880EX
HÀNG MỚI ĐÃ TẠM HẾT
BỘ CHÂN MÁY MANFROTTO ELEMENT MARK II 4-S
HÀNG MỚI ĐÃ TẠM HẾT
CHÂN MÁY ẢNH BENRO TABLETOP TRIPOD PP1
HÀNG MỚI ĐÃ TẠM HẾT
CHÂN MÁY ẢNH JOBY PODZILLA FLEXIBLE LARGE
HÀNG MỚI ĐÃ TẠM HẾT
CHÂN MÁY MỞ RỘNG DJI
HÀNG MỚI ĐÃ TẠM HẾT
CHÂN MÁY ẢNH TRIPOD STEINZEISER SZ-02 4 SECTION
HÀNG MỚI ĐÃ TẠM HẾT
CHÂN MÁY BENRO CLASSIC A38FD
HÀNG MỚI ĐÃ TẠM HẾT
TRIPOD LEOFOTO MR.Y - LY-224C+LH-25R
HÀNG MỚI ĐÃ TẠM HẾT
CHÂN MÁY ẢNH TRIPOD Q999C
HÀNG MỚI ĐÃ TẠM HẾT
ELEVATOR C-11
HÀNG MỚI ĐÃ TẠM HẾT
KING ACTION M-4
HÀNG MỚI ĐÃ TẠM HẾT
KENKO ST-50
HÀNG MỚI ĐÃ TẠM HẾT
Chân video Benro KH25P Tripod
HÀNG MỚI ĐÃ TẠM HẾT
CHÂN MONO STEINZEISE
HÀNG MỚI ĐÃ TẠM HẾT
BỘ CHÂN MÁY MANFROTTO ELEMENT MARK II 4-S- ĐEN
HÀNG MỚI ĐÃ TẠM HẾT
Chân máy Benro - T890
HÀNG MỚI ĐÃ TẠM HẾT
PGYTECH MantisPod Pro Vlogging Tripod
HÀNG MỚI ĐÃ TẠM HẾT
Chân máy Yunteng VCT-520RM Mini Tripod
HÀNG MỚI ĐÃ TẠM HẾT
Chân máy Weifeng 3520 Tripod
HÀNG MỚI ĐÃ TẠM HẾT
Chân Sirui 3T-05PH
HÀNG MỚI ĐÃ TẠM HẾT
Chân máy SIRUI MS-01K
HÀNG MỚI ĐÃ TẠM HẾT
Chân máy Yunteng VCT-668
Chân Máy Ảnh Tripod Yunteng VCT 690RM
KingMa Vlogging Grip Tripod cho Sony A6xx, A7x, Rx series
PGYTECH MantisPod 2.0 with Ball Head (White)
PGYTECH MantisPod 2.0 with Ball Head (Black)
Chân máy Benro IS 05 Tripod
PGYTECH MantisPod 2.0 with Ball Head & Remote Control Kit (Black)
PGYTECH MantisPod 2.0 with Ball Head & Remote Control Kit (White)
Chân máy SIRUI Traveler 5A Travel Tripod
Chân máy Benro Slim Tripod - TSL08AN00
Chân Máy SIRUI Traveler 5C Travel Tripod
Chân máy SIRUI Traveler 7A Travel Tripod
Chân máy Sirui A1005 Aluminum Tripod with Y-10 Ball Head
Chân máy Sirui AM-223 + B-00K-CN
Chân máy quay Sirui SH05 CN có củ chân
Chân máy Carbon Sirui T-025SK B-00K Ball Head
Chân máy SIRUI Traveler 7C Travel Tripod
Chân máy Sirui SH25 CN có củ chân 78-155cm
Chân máy Carbon Sirui AM-254
Chân máy Sirui AM-225 + B-00K-CN
Chân máy Sirui SH15 CN có củ chân 91-190cm
Chân máy Sirui A1205 Carbon Fiber Tripod with Y-11 Ball Head
Chân máy SIRUI AM2-Series AM-284 Tripod + Ball Head A10R
Chân máy SIRUI AM2-Series AM-284 Tripod
Chân máy Carbon Sirui AM-254 + Ballhead A10R
Chân máy SIRUI R-2214X Carbon
Sirui PH-20 Gimbal Head
Chân máy Carbon Sirui R-3213X
Chân máy Sirui SR-3203 SR Carbon
Chân SIRUI Carbon ST-125 + Ball ST-10X 38-159cm
Chân Sirui Carbon W-2204 (Chống nước)
Chân máy Sirui SR3204 Carbon
Chân máy Peak Design Travel Tripod | Aluminum | Nhập khẩu
Chân máy Benro Video - A673TMBS8 Pro
(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());
})();