모바일 에어 앱용으로 Flash Cs6의 코드 스 니펫을 사용하고 있습니다. 청취자를 올바르게 제거하려면 어떻게합니까? (나는 오류 1120 : 정의되지 않은 속성 ocean_slider의 액세스.) 다음 코드와 함께. 당신의 도움을 주셔서 감사합니다.이벤트 비활성화/활성화 - AS3에서 이벤트 리스너 제거
/* Deactivate/Activate Event
Conserve CPU and battery life by suspending expensive processes, such as ENTER_FRAME and TIMER events, when the application is not in focus.
Instructions:
1. Start timers and add event listeners in "fl_Activate".
2. Stop timers and remove event listeners in "fl_Deactivate".
*/
stage.addEventListener(Event.ACTIVATE, fl_Activate);
stage.addEventListener(Event.DEACTIVATE, fl_Deactivate);
function fl_Activate(event:Event):void
{
// Start timers and add event listeners here.
naturepage.sliders.ocean_slider.addEventListener(Event.ENTER_FRAME, ocean_slider);
function ocean_slider(e:Event):void
{
ocean_transform.volume = (naturepage.sliders.ocean_slider.value/100);
ocean_channel.soundTransform = ocean_transform;
}
}
function fl_Deactivate(event:Event):void
{
// Stop timers and remove event listeners here.
naturepage.sliders.ocean_slider.removeEventListener(Event.ENTER_FRAME, ocean_slider);
}
확인. 방금 코드를 다음과 같이 변경했지만 여전히 문제가 있습니다. removeEventListener없이 게시 한 후 함수가 내 응용 프로그램에서 작동하기 때문에 리스너가 확실히 추가되고 있습니다. 그러나 리스너를 제거하는 코드를 추가하면 퍼블리시하려고 할 때 오류 1120이 발생합니다.
stage.addEventListener(Event.ACTIVATE, fl_Activate);
stage.addEventListener(Event.DEACTIVATE, fl_Deactivate);
function fl_Activate(event:Event):void
{
addEventListener(Event.ENTER_FRAME,myFunction);
function myFunction(event:Event):void
{
ocean_transform.volume = (naturepage.sliders.ocean_slider.value/100);
ocean_channel.soundTransform = ocean_transform;
}
}
function fl_Deactivate(event:Event):void
{
removeEventListener(Event.ENTER_FRAME,myFunction);
}
몇 가지 : this : naturepage.sliders.ocean_slider는 최선의 방법이 아닙니다. 그런 식으로 객체를 드릴해서는 안됩니다. 추가하고 제거하는 코드는 괜찮습니다. 그렇지 않으면 리스너를 추가하려고하는 순간 ocean_slider 객체가 생성되지 않았을 것입니다. 또는 리스너를 제거하기 전에 제거되었습니다. 이 모든 코드를 슬라이더 객체로 이동하여 ocean_slider의 리스너가 ocean_slider의 범위에 있고 ocean_slider의 스테이지 또는 작성 완료 이벤트를 기다린 다음 enterframe 리스너를 추가합니다. –
또한 함수의 이름을 지정하지 않습니다. 객체는 같은 이름 (ocean_slider)이므로 실수를하고 오류를 빠르게 생성하는 확실한 방법입니다 –