Trang chủ
>
Phụ kiện khác >
Phụ kiện khác THINKTANK
Túi đựng laptop Think Tank Retrospective Laptop Sleeve 16
MỚI 100%
Đơn giá:
990,000đ
Giảm: 0đ
990,000đ
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
Hầu hết các hành lý và ba lô không có ngăn đựng máy tính xách tay có đệm, vì vậy bạn cần mang theo túi đựng riêng. Có sẵn hai kích cỡ, bao đựng máy tính xách tay Retrospective cung cấp khả năng bảo vệ có đệm cho máy tính xách tay của bạn trong một bao đựng mỏng, vừa vặn. Một nắp trên độc đáo mở ra để tạo thành tấm lót chuột, nhờ đó bạn có thể bảo vệ máy tính xách tay và chuột của mình khỏi mặt bàn bám bẩn tại quán cà phê, ghế đá công viên hoặc phòng chờ sân bay. -Túi nén Ultra Spandura hai lớp dành cho phụ kiện máy tính -Nắp đóng từ tính tăng gấp đôi như miếng lót chuột khi gập mở -Tay nắm lưới poly mềm -Túi mỏng phù hợp với hầu hết các túi / ba lô
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
Hầu hết các hành lý và ba lô không có ngăn đựng máy tính xách tay có đệm, vì vậy bạn cần mang theo túi đựng riêng. Có sẵn hai kích cỡ, bao đựng máy tính xách tay Retrospective cung cấp khả năng bảo vệ có đệm cho máy tính xách tay của bạn trong một bao đựng mỏng, vừa vặn. Một nắp trên độc đáo mở ra để tạo thành tấm lót chuột, nhờ đó bạn có thể bảo vệ máy tính xách tay và chuột của mình khỏi mặt bàn bám bẩn tại quán cà phê, ghế đá công viên hoặc phòng chờ sân bay. -Túi nén Ultra Spandura hai lớp dành cho phụ kiện máy tính -Nắp đóng từ tính tăng gấp đôi như miếng lót chuột khi gập mở -Tay nắm lưới poly mềm -Túi mỏng phù hợp với hầu hết các túi / ba lô
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());
})();