JS 월드에서 AS3에 왔는데 익명의 기능이 내 약점이라는 것을 고백해야합니다. 나는 그들을 도처에 쓰는 경향이있다. 이제는 AS3에 와서 많은 곳에서 들었습니다. AS와 Flash는 가비지 수집을 처리 할 때 매우 좋지 않습니다. 즉, 이상한 설명 할 수없는 메모리 누수를 피하기 위해 수동으로 모든 이벤트 핸들러와 객체를 비우고 삭제해야합니다. 충돌. 이 부분이 사실인지 모르지만 처음부터 모범 사례를 따르고 싶습니다.익명 동작 스크립트의 이벤트 처리기로 기능 - 좋든 나쁘니?
내 질문에 - 얼마나 나쁜 이벤트 처리기로 익명의 기능을 사용하는 아이디어입니까? ,
addEventListener(Event.ENTER_FRAME, function() : void {
controls.elapsed = stream.time;
});
이 떨어져 비디오 플레이어의 현재 재생 시간 설정에서 전체 UI를 업데이트 세터입니다 contorls.elapsed 및 스트림이 NetStream을 객체입니다 예를 들어이 같은 코드를 살펴 보자 실제 비디오를 스트리밍합니다.
익명의 기능으로 코드를보다 명확하고 직관적으로 만들 수있는 곳이 많이 있습니다. 간단한 페이드 인 효과를 컨트롤 바의 다음 코드 확인 : 나는 완전히 보이는하고 코드에 맞는 방법과 같은
public function showControls() : void
{
var self:Controls = this;
if (!visible) {
visible = true;
fadeTimer = new Timer(30, 10);
fadeTimer.addEventListener(TimerEvent.TIMER, function() : void {
self.alpha += 0.1;
});
fadeTimer.addEventListener(TimerEvent.TIMER_COMPLETE, function() : void {
self.alpha = 1;
});
fadeTimer.start();
}
}
을,하지만 난 누출에 대한 걱정. Event.ENTER_FRAME 핸들러는이 형식에서는 결코 해를 끼치 지 않지만 타이머 리스너는 어떨까요? 해당 리스너를 수동으로 제거해야합니까, 아니면 자동으로 제거 되나요? fadeTimer = null? 익명 함수를 사용하는 리스너를 제대로 제거 할 수 있습니까?
나는 익명의 기능을 제공하는 팬이 아닙니다. 하나는 추악하고 다른 곳에서는 코드를 중복시킬 수 없으며 마지막으로 성능과 메모리에 영향을 미치는 활성화 개체를 만듭니다. http://onflex.org/ACDS/AS3TuningInsideAVM2JIT.pdf – Allan
성능과 메모리에 영향을주지 않는 요소가 AS에 있습니까? :) 글쎄, 내 익명의 기능은 유용합니다, 하나는 그 기능을 재사용하지 않아도, 클래스 정의를 어지럽히고 싶지 않아 한 장소에서 전체 논리를 유지하고 싶어. 이것은 내가 언제 어떻게 그것을 사용하는 경향이있다. 링크를 가져 주셔서 감사합니다, 나는 그것을 확인합니다. – jayarjo
흠 ... "약간의 성능과 메모리에 미치는 영향"이 실제로 따옴표로 밝혀졌습니다. 이제는 어떤 성명서예요? "일부"는 무엇을 의미합니까? 이것이 그 의미에 의해 읽혀 진다면, "약간"은 사소한 가치처럼 들린다. 아니면 안돼? 얼마나 막연한가. – jayarjo