2013-03-06 3 views
1

Swiffy를 사용하여 .fla 파일을 출력하기가 쉽지만, iPad의 가로 모드에서 볼 때 프로젝트가 절반 이상 흰색으로 깜박입니다. 다른 장치에서는 복제 할 수없는 매우 이상한 동작입니다.CreateJS Animation Timeline 지연

그래서 저는 CreateJS를 사용하여 문제를 해결하려고했습니다. 나는 다른 사람들이 개발 한 편집 코드를 얻기 위해 현재로서는 충분한 JS만을 알고 있으므로, 지금까지는별로 효과가 없습니다. 내가 시간 제한을 마음에 애니메이션을 얻을 수 없었습니다

/* js 
this.stop(); 
var t=setTimeout(function(){(this.play())}, 1000); 
*/ 

or 

/* js 
this.stop(); 
setTimeout(this.play(), 1000); 
*/ 

, 나는 시도하고 마법이 일어날 수 있도록 여러 가지 변형을 시도했다 :

내가 여기까지 왔. 모든 프레임은 즉시 다음 프레임을로드하며 전혀 멈추지 않습니다. 내가 여기서 어디로 잘못 가고 있니? 나는이 몇 주 내 오프 시간에 해결하기 위해 노력하고 내 자신에 대한 어떤 곳이라도없는 것으로 어떤 도움을 매우 극명하게 될 것이다

stop(); 

var shortTimer:Timer=new Timer(1000); 
shortTimer.addEventListener(TimerEvent.TIMER, timerN1); 
shortTimer.start(); 


function timerN1(e:TimerEvent):void{ 
    play(); 
    shortTimer.reset(); 
} 

, 내 클라이언트 : 여기

원래 액션 스크립트입니다 점점 더 화를 내고있다. 프로그래밍에 관한 한 아직까지는 매우 교육받지 못한 디자이너가 많습니다. 다시 말하지만, 제안조차도 현재로서는 매우 유용 할 것입니다. 그것을 부수는 것처럼 보이지 않습니다.

답변

3

이 구문이 더 정확 :

 

/* js 
this.stop(); 
var t=setTimeout(function(){(this.play())}, 1000); 
*/ 
 

그러나 "이"창,하지를 호출하는 무비 클립 인 것을 알 수 있습니다. 로컬 참조 (이 경우 "_this")를 사용하여이 문제를 해결할 수 있습니다.

 

/* js 
this.stop(); 
var _this = this; 
var t=setTimeout(function(){ 
    console.log(this, _this); 
    _this.play(); 
}, 1000); 
*/ 
 

콘솔을보고 "this"와 "_this"의 차이점을 확인하여 테스트 할 수 있습니다.

건배.

+0

이것은 효과가있다! 정말 고맙습니다! 하나 편집하지만, 당신은 "기능"에서 "n"을 버렸습니다. 건배! – Todd

0

더 많은 코드를 게시 할 수 있습니까? 당신은 onAnimationEnd 기능을 사용하여 시도했다 :

var _this = this; 

_this.onAnimationEnd = function() { 
    _this.stop(); 
    setTimeout(function(){ 
     _this.play(); 
    }, 1000) 
} 
+0

"animation"이라는 이름이 없기 때문에이 작업을 수행하지 못했습니다. 귀하의 의견을 보내 주셔서 감사합니다! – Todd

+0

글쎄, 나는 더 많은 코드 (애니메이션을 만드는 자바 스크립트)를 볼 수 있다면 더 많은 도움을 줄 수있을 것이다. CreateJS를 자주 사용합니다. – eivers88

+0

함수 범위가 손상된 원본과 동일한 문제가 있습니다. – Lanny

0

하면이 당신의 setTimeout 함수 내에서 당신의 범위를 살아있는 유지하십시오 :

sprite.on('animationend', function(event) { 
    event.target.stop(); 
    setTimeout(animationend.bind(event.target), 1000); 
}); 

function animationend() { 
    this.gotoAndPlay('run'); 
} 

.bind()의 사용으로 당신이 호출 된 함수의 범위로 객체를 전달할 수 있습니다. More information here.