Khoảng giá
Từ: 0 triệu
Đến: Không giới hạn
Nắp che chống nước kính ngắm Think Tank EP-NZP
Đơn giá
490,000đ
Nắp che chống nước kính ngắm Think Tank EP-15
Đơn giá
490,000đ
Miếng đệm nhựa (nắp che chống nước kính ngắm) Think Tank EP-20
Đơn giá
490,000đ
Miếng đệm nhựa (nắp che chống nước kính ngắm) Think Tank EP-S
Đơn giá
490,000đ
Miếng đệm nhựa (nắp che chống nước kính ngắm) Think Tank EP-N
Đơn giá
490,000đ
Miếng đệm nhựa (nắp che chống nước kính ngắm) Think Tank EP-SP
Đơn giá
490,000đ
Miếng đệm nhựa (nắp che chống nước kính ngắm) Think Tank EP-NSI
Đơn giá
490,000đ
Miếng đệm nhựa (nắp che chống nước kính ngắm) Think Tank EP-NZ
Đơn giá
490,000đ
Miếng đệm nhựa (nắp che chống nước kính ngắm) Think Tank EP-F
Đơn giá
490,000đ
Túi đeo bảng tên Think Tank Credential Holder V2.0 Long
Đơn giá
550,000đ
Túi đeo bảng tên Think Tank Credential Holder V2.0 Short
Đơn giá
550,000đ
Túi đựng laptop Think Tank Retrospective Laptop Sleeve 16
Đơn giá
990,000đ
Áo che mưa chống nước máy ảnh Think Tank Emergency Rain Cover - Small
Đơn giá
990,000đ
Túi trùm ống kính camera Think Tank Emergency Rain Cover - Medium
Đơn giá
1,100,000đ
Túi trùm ống kính camera Think Tank Emergency Rain Cover - Large
Đơn giá
1,650,000đ
Tấm che nắng màn hình laptop Think Tank Pixel Sunscreen V2.0
Đơn giá
2,750,000đ
Dây đeo Think Tank Thin Skin Belt V3.0 - S-M-L
HÀNG MỚI ĐÃ TẠM HẾT
Ba lô máy ảnh Think Tank Urban Access Backpack 15
HÀNG MỚI ĐÃ TẠM HẾT
Túi máy ảnh Think Tank Retrospective 7 V2.0 (Pinestone)
HÀNG MỚI ĐÃ TẠM HẾT
Túi đựng lens Think Tank Lens Changer 15 V3.0
HÀNG MỚI ĐÃ TẠM HẾT
Túi đựng kính lọc Think Tank Filter Nest Mini
HÀNG MỚI ĐÃ TẠM HẾT
Túi máy ảnh Think Tank Little Stuff It
HÀNG MỚI ĐÃ TẠM HẾT
Túi đựng lens Think Tank Lens Changer 25 V3.0
HÀNG MỚI ĐÃ TẠM HẾT
Túi đựng lens Think Tank Lens Changer 35 V3.0
HÀNG MỚI ĐÃ TẠM HẾT
Túi đựng lens Think Tank Lens Changer 50 V3.0
HÀNG MỚI ĐÃ TẠM HẾT
Túi máy ảnh Think Tank Stuff It
HÀNG MỚI ĐÃ TẠM HẾT
Túi máy ảnh Think Tank Mirrorless Mover 5 (Pewter)
HÀNG MỚI ĐÃ TẠM HẾT
Túi máy ảnh Think Tank Mirrorless Mover 5 (Dark Blue)
HÀNG MỚI ĐÃ TẠM HẾT
Túi máy ảnh Think Tank Mirrorless Mover 5 (Deep Red)
HÀNG MỚI ĐÃ TẠM HẾT
Túi máy ảnh Think Tank Digital Holster 5
HÀNG MỚI ĐÃ TẠM HẾT
Túi đựng lens Think Tank Skin 50 V3.0
Túi đựng lens Think Tank Lens Changer 75 Pop Down V3.0
Dây đeo Think Tank Pro Speed Belt V3.0 - S-M
Dây đeo Think Tank Pro Speed Belt V3.0 - M-L
Dây đeo Think Tank Pro Speed Belt V3.0 - L-XL
Dây đeo Think Tank Pixel Racing Harness V3.0
Túi đựng kính lọc Think Tank Filter Nest
Túi máy ảnh Think Tank Mirrorless Mover 10 (Deep Red)
Túi máy ảnh Think Tank Mirrorless Mover 10 (Pewter)
Túi máy ảnh Think Tank Mirrorless Mover 10 (Dark Blue)
Túi đựng lens Think Tank Skin 75 Pop Down V3.0
Túi đựng lens Think Tank Lens Changer 150-600 V3.0
Túi máy ảnh Think Tank Mirrorless Mover 20 (Pewter)
Túi máy ảnh Think Tank Mirrorless Mover 20 (Dark Blue)
Túi máy ảnh Think Tank Mirrorless Mover 20 (Deep Red)
Túi máy ảnh Think Tank Digital Holster 10 V2.0
Túi đựng lens Think Tank Skin Changer Pop Down V3.0
Túi máy ảnh Think Tank Hubba Hubba Hiney V3.0
Túi máy ảnh Think Tank Speed Changer V3.0
Túi đựng kính lọc Think Tank Filter Hive
Túi máy ảnh Think Tank Mirrorless Mover 25i (Pewter)
Túi máy ảnh Think Tank Mirrorless Mover 25i (Dark Blue)
Túi máy ảnh Think Tank Mirrorless Mover 30i (Pewter)
Túi máy ảnh Think Tank Mirrorless Mover 30i (Dark Blue)
Túi máy ảnh Think Tank Mirrorless Mover 30i (Deep Red)
Túi máy ảnh Think Tank Digital Holster 20 V2.0
Túi máy ảnh Think Tank Digital Holster 30 V2.0
Túi máy ảnh Think Tank TurnStyle 5 V2.0 (Charcoal)
Túi máy ảnh Think Tank TurnStyle 5 V2.0 (Blue Indigo)
Túi máy ảnh Think Tank Digital Holster 40 V2.0
Túi máy ảnh Think Tank Digital Holster 50 V2.0
Túi máy ảnh Think Tank TurnStyle 10 V2.0 (Charcoal)
Túi máy ảnh Think Tank TurnStyle 10 V2.0 (Blue Indigo)
Túi máy ảnh Think Tank TurnStyle 20 V2.0 (Charcoal)
Túi máy ảnh Think Tank TurnStyle 20 V2.0 (Blue Indigo)
Túi máy ảnh Think Tank Urban Access Sling 8
Túi máy ảnh Think Tank Retrospective 4 V2.0 (Pinestone)
Túi máy ảnh Think Tank Retrospective 4 V2.0 (Black)
Túi máy ảnh Think Tank Digital Holster 150
Túi máy ảnh Think Tank Vision 10 (Graphite)
Túi máy ảnh Think Tank Urban Access Sling 10
Túi máy ảnh Think Tank PhotoCross 10 (Carbon Grey)
Túi máy ảnh Think Tank PhotoCross 10 (Orange Ember)
Túi máy ảnh Think Tank SpeedTop Crossbody 10 (Graphite)
Túi máy ảnh Think Tank Vision 13 (Graphite)
Túi máy ảnh Think Tank PhotoCross 13 (Carbon Grey)
Túi máy ảnh Think Tank PhotoCross 13 (Orange Ember)
Túi máy ảnh Think Tank Vision 15 (Graphite)
Túi máy ảnh Think Tank SpeedTop Crossbody 15 (Graphite)
Ba lô máy ảnh Think Tank PhotoCross 15 Backpack (Orange Ember)
Túi máy ảnh Think Tank Retrospective 5 V2.0 (Pinestone)
Túi máy ảnh Think Tank Retrospective 5 V2.0 (Black)
Ba lô máy ảnh Think Tank PhotoCross 13 Backpack (Carbon Grey)
Ba lô máy ảnh Think Tank PhotoCross 13 Backpack (Orange Ember)
Ba lô máy ảnh Think Tank PhotoCross 15 Backpack (Carbon Grey)
Túi máy ảnh Think Tank Retrospective 7 V2.0 (Black)
Túi máy ảnh Think Tank Retrospective 10 V2.0 (Pinestone)
Túi máy ảnh Think Tank Retrospective 10 V2.0 (Black)
Ba lô máy ảnh Think Tank TrailScape 18L
Ba lô máy ảnh Think Tank StreetWalker V2.0
Ba lô máy ảnh Think Tank Urban Approach 15
Túi máy ảnh Think Tank Retrospective 20 V2.0 (Pinestone)
Túi máy ảnh Think Tank Retrospective 20 V2.0 (Black)
Ba lô máy ảnh Think Tank BackStory 13
Ba lô máy ảnh Think Tank StreetWalker Pro V2.0
Ba lô máy ảnh Think Tank Airport Essentials
Ba lô máy ảnh Think Tank BackLight 18L Photo Daypack (Charcoal)
Ba lô máy ảnh Think Tank BackLight 18L Photo Daypack (Woodland)
Túi máy ảnh Think Tank Retrospective 30 V2.0 (Pinestone)
Túi máy ảnh Think Tank Retrospective 30 V2.0 (Black)
Ba lô máy ảnh Think Tank BackStory 15
Ba lô máy ảnh Think Tank Airport Commuter
Ba lô máy ảnh Think Tank Urban Access Backpack 13
Ba lô máy ảnh Think Tank Glass Limo
Ba lô máy ảnh Think Tank StreetWalker HardDrive V2.0
Ba lô máy ảnh Think Tank Rotation 22L Backpack
Ba lô máy ảnh Think Tank BackLight 26L Photo Daypack (Charcoal)
Ba lô máy ảnh Think Tank BackLight 26L Photo Daypack (Woodland)
Ba lô máy ảnh Think Tank Retrospective Backpack 15 (Black)
Vali máy ảnh Think Tank Airport Advantage (Black)
Vali máy ảnh Think Tank Essentials Convertible Rolling Backpack
Vali đựng chân đèn Think Tank Stand Manager 52
Ba lô máy ảnh Think Tank Airport Accelerator
Ba lô máy ảnh Think Tank BackLight 36L Photo Daypack (Charcoal)
Ba lô máy ảnh Think Tank BackLight 36L Photo Daypack (Woodland)
Ba lô máy ảnh Think Tank Shape Shifter 17 V2.0
Vali máy ảnh Think Tank Airport Navigator
Vali máy ảnh Think Tank Airport Advantage XT (Black)
Ba lô máy ảnh Think Tank Rotation 34L Backpack
Ba lô máy ảnh Think Tank StreetWalker Rolling Backpack V2.0
Vali đựng chân máy Think Tank Video Tripod Manager 44
Ba lô máy ảnh Think Tank FirstLight 35L
Vali máy ảnh Think Tank Airport TakeOff V2.0
Vali máy ảnh Think Tank Airport Roller Derby
Vali máy ảnh Think Tank Airport International V3.0
Ba lô máy ảnh Think Tank BackLight Elite 45L (Storm Grey)
Vali máy ảnh Think Tank Airport Security V3.0
Ba lô máy ảnh Think Tank Rotation Pro 50+L Backpack
Vali máy ảnh Think Tank Logistics Manager 30 V2.0
Vali máy ảnh Think Tank Production Manager 40 V2.0
Vali đựng thiết bị studio Think Tank Production Manager 50 V2.0
(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());
})();