Мой основной класс добавлен в этап моей .fla, и я хочу удалить и повторно добавить/«перезапустить» класс, когда он завершит анимацию. Все мои анимации происходят в Main и добавляются в дерево отображения внутри Main. Как я могу запустить функцию finishNow()
из Main.as?Как вызвать функцию внутри .FLA из класса AS
.fla файл:
var run:Main = new Main(this);
stage.addChild(run);
function finishNow() {
stage.removeChild(run);
var run:Main = new Main(this);
stage.addChild(run);
}
Main.as файл:
var stageHolder:Object;
public function Main(stageHolderTemp) {
stageHolder = stageHolderTemp;
trace(stageHolder);
}
function callFinishFunction():void {
// how to call finishNow() function from .fla file here
}
EDIT: Разработка программы изменилась. Все еще пытаюсь сделать то же самое (вызов функции finishNow(), но теперь он находится в Program.as). Все работает нормально, за исключением ошибки для program.finishNow();
:
ТипError: Ошибка # 1009: Невозможно получить доступ к свойству или методу ссылки на нулевой объект.
Файл .fla:
Теперь не содержит никакого кода. Он связан с Program.as.
Program.as файл:
package {
import flash.display.MovieClip;
public class Program extends MovieClip {
public function Program() {
startNow();
}
function startNow() {
var run:Main = new Main(this);
addChild(run);
}
function finishNow() {
removeChild(run);
var run:Main = new Main(this);
addChild(run);
}
}
}
Main.as Файл:
package {
import flash.display.Sprite;
public class Main extends Sprite
{
var stageHolder:Object;
public var program:Program;
public function Main(stageHolderTemp) {
stageHolder = stageHolderTemp;
trace(stageHolder);
someFunctionsThatDrawGraphics();
}
function callFinishFunction():void {
// how to call finishNow() function from Program.as file here?
program.finishNow();
}
}
}
Когда я попробуйте вызвать 'finishNow();'/'testFunction();' он приходит с ошибкой 1180: вызов возможно неопределенного встреченного hod addFrameScript. Мой основной AS-класс уже расширяет Sprite, поэтому он не может продлить MovieClip (нужно ли это для вызова функции?) – ArrayOutOfBounds
вы должны знать разные спрайты и MovieClip. sprite не имеет фреймворка. В отличие от объекта Sprite, объект MovieClip имеет временную шкалу. поэтому, если вы хотите вызвать функцию в.fla должен расширить MovieClip. –
Хорошо, я изменил Sprite на MovieClip, но он дает ArgumentError: Ошибка # 1063: несоответствие счетчика аргументов на Main(). Ожидаемое 1, получено 0. Анимации, которые тянулись в Main, больше не появляются. – ArrayOutOfBounds