애니메이트하는 개별 오브젝트에 대한 리스너를 제거하려고합니다. 개별 개체의 시세표는 y에서 200 픽셀에 도달하면 다른 시간에 중단되기 때문에 제거하고 싶습니다. 이 코드는 Adobe Animate의 한 프레임입니다. 그래서이 코드가 작동하지 않습니다 :createjs에서 개별 오브젝트의 티커 제거
this.stop();
that= this;
var aParticle;
var mySpeed = 12;
var myRotation = 4;
var totalParticles = 5;
var stopParticles = false;
var particleHolder = new createjs.Container();
var count = 0;
var collission_ar = [this.parent.mc_coll0, this.parent.mc_coll1, `this.parent.mc_coll2, this.parent.mc_coll3, this.parent.mc_coll4, this.parent.mc_coll5, this.parent.mc_coll6, this.parent.mc_coll7, this.parent.mc_coll8, this.parent.mc_coll9, this.parent.mc_coll10, this.parent.mc_coll11, this.parent.mc_coll12, this.parent.mc_coll13, this.parent.mc_coll14];`
var totalCollisions = collission_ar.length;
this.addChild(particleHolder);
//stage.update();
var xRange = width;
var yRange = height;
var scaleNum = 1;
//var collisionMethod = ndgmr.checkPixelCollision;
this.scaleX = 1;
this.scaleY = 1;
createParticles()
setTimeout(function(){
removeTimer();
}, 5000)
function createParticles(){
var particle_ar = [];
var randNum = Math.ceil(Math.random() * totalParticles);
aParticle = new lib['MC_leaf'+randNum]();
aParticle.name = 'MC_leaf'+count;
aParticle.x = Math.random() * xRange;
aParticle.y = -Math.random() * 15;
theNum = Math.random() * scaleNum;
aParticle.scaleX = theNum
aParticle.scaleY = theNum
aParticle.alpha = 1;
aParticle.collision = Math.floor(Math.random() * 2);
particleHolder.addChild(aParticle);
aParticle.addEventListener("tick", animateParticle.bind(that));
if(!stopParticles){
timer = setTimeout(function() { createParticles() }, 100);
}
count++;
}
function animateParticle (event){
var part = event.currentTarget;
event.currentTarget.y += mySpeed
event.currentTarget.x += Math.random()/10
event.currentTarget.rotation += myRotation;
if (part.y > 200) {
if(part.name == 'MC_leaf0') console.log('part0 y '+part.y);
part.removeEventListener("tick", animateParticle.bind(that));
}
}
function removeTimer() {
stopParticles = true;
timer = clearInterval();
}
var timer = setTimeout(function() { createParticles() }, 100, that);
그래서이 코드를 그냥 무시 : part.removeEventListener ("틱", animateParticle.bind (즉));
감사합니다. Lanny! – 4n6design
위의 동일한 코드에서 입자를 만드는 타이머를 setInterval로 변경하고 범위를 잃어서 간격을 중지하는 방법을 찾을 수 없습니다. var timer = setTimeout (function() {createParticles()}, 100, that); 결국 코드는 다음 함수로 이동합니다. function removeTimer() { stopParticles = true; timer = clearInterval(); } 여기 타이머가 삭제되지 않습니다. 내가 뭘 잘못하고 있니? – 4n6design