Пакеты импорта AS3 не работают - игра с перетаскиванием в Captivate

Я пытаюсь поместить игру AS3 с перетаскиванием на слайд в captivate 6. Автономный swf-файл работает нормально, но как только он будет импортирован на слайд в captivate и вы его опубликуете, captivate повторно обернет все его содержимое в другой swf-файл, что приведет к потере импортированных игровых пакетов.

На основной временной шкале во флэш-памяти у меня есть действие

import com.test.games.*;

var dragArray:Array = [comment1, comment2, comment3, comment4, comment5, comment6, comment7, comment8 ];
var matchArray:Array = [leftMatch, leftMatch, rightMatch, rightMatch, rightMatch, leftMatch, rightMatch, leftMatch ];
var posArray:Array = [ {x:154, y:362}, {x:154, y:316}, {x:641, y:362}, {x:641, y:316}, {x:641, y:270}, {x:154, y:270}, {x:641, y:224}, {x:154, y:224} ];

var dragGame:DragGame = new DragGame(stage, dragArray, matchArray, posArray);

dragGame.addEventListener(DragGame.MATCH_MADE, onMatch);
dragGame.addEventListener(DragGame.NO_MATCH, onFlub);
dragGame.addEventListener(DragGame.ALL_DONE, onDone);

function onMatch(event:Event):void {
    var matchSound:Sound = new MatchSound();
    matchSound.play();
}
function onFlub(event:Event):void {
    var flubSound:Sound = new FlubSound();
    flubSound.play();
}
function onDone(event:Event):void {
    var applause:Sound = new Applause();
    applause.play();
}

Но я думаю, что проблема заключается в том, что 4 файла пакета из

import com.test.games.*;

теряются при повторной упаковке в swf-файл captivate, если в этом есть смысл?

Мне нужно настроить таргетинг на root или что-то еще, чтобы он работал, или есть способ вложить пакеты для всех файлов с основной временной шкалой.

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


person Randy4    schedule 27.03.2013    source источник


Ответы (1)


Я полагаю, это потому, что значение stage может быть нулевым, когда вы импортируете его в Captivate. Заменить этим:

var dragGame:DragGame; // uninitialized!
if (stage) init() else addEventListener(Event.ADDED_TO_STAGE,init);
function init(e:Event=null):void {
    removeEventListener(Event.ADDED_TO_STAGE,init);
    // here we have stage available, let's make a game
    dragGame = new DragGame(stage, dragArray, matchArray, posArray); 
    dragGame.addEventListener(DragGame.MATCH_MADE, onMatch);
    dragGame.addEventListener(DragGame.NO_MATCH, onFlub);
    dragGame.addEventListener(DragGame.ALL_DONE, onDone);
}
person Vesper    schedule 27.03.2013
comment
спасибо, я попытался изменить это, но он не работает как отдельная версия и, к сожалению, не работает и в Captivate. я думаю, это как-то связано с import com.test.games. *; ломается, поскольку все остальное работает, я даже могу перетащить элементы, чтобы увлечь его, просто ответы хранятся в указанных файлах пакета AS3 - person Randy4; 27.03.2013
comment
Ой. См. Отредактированный код. Забыл, что в одном случае стадия присутствует. - person Vesper; 27.03.2013
comment
Я не думаю, что импорт вообще может сломаться, импорт предназначен для компилятора, а не для среды выполнения. - person Vesper; 27.03.2013