Как скопировать скрипт из файла ".as" в основную временную шкалу flash? - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть программа, созданная на flash, которая работает хорошо, действия над файлом .fla пусты, у него есть класс, который выполняет всю работу:

enter image description here

Это содержимое класса:

package {

    import flash.events.Event;
    import org.papervision3d.objects.parsers.DAE;

    [SWF(width=640, height=480, backgroundColor=0xCCCCCC, frameRate=30)]

    public class Earth extends PV3DARApp {

        private var _earth:DAE;

        public function Earth() {
            addEventListener(Event.INIT, _onInit);
            init('Data/camera_para.dat', 'Data/flarlogo.pat');
        }

        private function _onInit(e:Event):void {
            _earth = new DAE();
            _earth.load('model/minecraft.DAE');
            //_earth.addEventListener(Event.OPEN,imageLoaded);
            _earth.scale = 1.5;
            _earth.rotationX = 90;
            _markerNode.addChild(_earth);

            //addEventListener(Event.ENTER_FRAME, _update);
        }

        private function imageLoaded(e:Event):void { trace("HOLA"); }

        private function _update(e:Event):void {
            _earth.rotationZ -= 1
        }
    }
}

Я хочу передать весь сценарий из класса действиям на главной временной шкале, я имею в виду, я не хочу использовать класс, но у меня нетИдея, как это сделать, исключить «частную» строку во всех функциях и устранить некоторые другие логические мысли, такие как «пакет {» и другие, недостаточно.

Так, пожалуйста, как я могу написать ту же программу, используя только вкладку действий из флэш-памяти?Спасибо!

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Я не думаю, что это хорошая идея. Я (и большинство других разработчиков AS3) считаю, что весь код временной шкалы должен быть уничтожен, но он должен выглядеть примерно так:

import flash.events.Event;
import org.papervision3d.objects.parsers.DAE;

var _earth:DAE;

function _onInit(e:Event):void {
    _earth = new DAE();
    _earth.load('model/minecraft.DAE');
    //_earth.addEventListener(Event.OPEN,imageLoaded);
    _earth.scale = 1.5;
    _earth.rotationX = 90;
    _markerNode.addChild(_earth);

    //addEventListener(Event.ENTER_FRAME, _update);
}

function imageLoaded(e:Event):void { trace("HOLA"); }

function _update(e:Event):void {
    _earth.rotationZ -= 1;
}

addEventListener(Event.INIT, _onInit);
init('Data/camera_para.dat', 'Data/flarlogo.pat');

Нет причин не просто использовать класс документа. Я хотел бы предложить узнать, как работают классы. Существует множество отличных ресурсов, в том числе:

1 голос
/ 07 апреля 2011

Я должен согласиться с идеей, что использование кода временной шкалы является плохой идеей .

Теперь, переходя к вашему коду, трудно точно знать, не зная, какой родительский классделает.

Я предполагаю, что вы используете пример кода FLARToolKit.Я бы поступил так, как @Adam Harte показывает вам в своем ответе, плюс изменил класс PV3DARApp так, чтобы вы немного приспосабливались.

Поскольку в моей книге вся идея плохая, я не буду беспокоитьсясделайте все правильно, просто предложите быстрые изменения.

В PV3DARApp сделайте _markerNode общедоступным:

//protected var _markerNode:FLARBaseNode;
public var _markerNode:FLARBaseNode;

В PV3DARApp и ARAppBase измените метод init с защищенного на общедоступный:

public function init(cameraFile:String, codeFile:String, canvasWidth:int = 320, canvasHeight:int = 240, codeWidth:int = 80):void {

Тогда это должно выглядеть примерно так:

import flash.events.Event;
import org.papervision3d.objects.parsers.DAE;

var _earth:DAE;
var _holder:PV3DARApp  = new PV3DARApp;

function _onInit(e:Event):void {
    _earth = new DAE();
    _earth.load('model/minecraft.DAE');
    //_earth.addEventListener(Event.OPEN,imageLoaded);
    _earth.scale = 1.5;
    _earth.rotationX = 90;
   _holder. init('Data/camera_para.dat', 'Data/flarlogo.pat');
    //_markerNode.addChild(_earth);     
  _holder._markerNode.addChild(_earth); 
    //addEventListener(Event.ENTER_FRAME, _update);
}

function imageLoaded(e:Event):void { trace("HOLA"); }

function _update(e:Event):void {
    _earth.rotationZ -= 1;
}

addEventListener(Event.INIT, _onInit);
init('Data/camera_para.dat', 'Data/flarlogo.pat');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...