2016-08-31 5 views
0

Я пытаюсь протестировать простую функцию, объявленную в первом кадре. Когда я пишу fl_DoRestart(); на frame 50 Я получаю следующую ошибку: Uncaught ReferenceError: fl_DoRestart is not defined, но она определена на фрейме. Почему это не работает? Это была очень простой в ActionScript :(CreateJS/Adobe Animate CC: тестирование простой функции

В конце концов я должен быть в состоянии вызвать эту функцию из другой функции, прямо сейчас я просто тестирования

Вот моя функция на раме одной:.

function fl_DoRestart(){ 
     this.gotoAndPlay(1); 
     console.log("play From Start"); 
    } 

ответ

1

функция была определена на этом кадре, но это не имеет никакого отношения к чему-либо. Вы можете вызвать его из этого кадра сценария только (и this может быть window вместо этого сценария)

с Анимат e export, рекомендуется хранить вызовы методов на this, поэтому к ним можно получить доступ.

this.fl_DoRestart(){ 
    this.gotoAndPlay(1); 
    console.log("play From Start"); 
} 
this.fl_DoRestart(); 

// From the root 
exportRoot.someMoveClip.fl_DoRestart(); 

// Using a callback 
btn.addEventListener("click", someMovieClip.fl_DoRestart.bind(this)); 

// Shortcut with "on()" 
btn.on("click", someMovieClip.fl_DoRestart, this); 

Надеюсь, что пролить свет на то, как это работает. Еще одна вещь, которую следует учитывать, заключается в том, что сценарии фреймов в экспорте Animate CC будут выполняться каждый раз, когда к кадру обращаются, поэтому вы можете проверить, определены ли вещи перед запуском скриптов.

if (this.fl_DoRestart == null) { 
    // Then define stuff here 
} 

Cheers.

+0

Спасибо, Ланни, это полезно. Итак, если я использую 'this' при объявлении функции, я могу затем получить доступ к этой функции из других фреймов? В противном случае область действия ограничена рамкой, на которой они были объявлены? И функция будет запускаться только при объявлении, но не вызвана? Вау! Хорошо спасибо, у меня есть еще кое-что, чтобы поиграть здесь :) –

 Смежные вопросы

  • Нет связанных вопросов^_^