Сохранение уровней простой флеш игры? - PullRequest
0 голосов
/ 07 мая 2018

С особой благодарностью JoãoCésar Этот код as3 создает функцию для генерации загрузчика SWF. Он использовал инкрементное значение (число) для циклического перебора массива, в котором хранится динамическая информация о каждом загрузчике. В этом случае count% swfs.length приведет к 0, 1, 0, 1 ... Эффективная загрузка SWF в последовательности цикла.

Так вот ИДЕЯ:

Как сохранить или запомнить, когда в последний раз файл SWF закрывался, и в следующий раз вы просто начинаете с этого ... (Он должен помнить, какой файл SWF завершен, и в следующий раз вы начнете с этого файла вместо child1. swf)

Для этого я использовал SharedObject и попытался сохранить номер SWF-файла, который только что загружен в переменную, но я не могу правильно обработать его ...

Спасибо

Вот код:

import com.greensock.*;  
import com.greensock.loading.*;  
import com.greensock.events.LoaderEvent;  
import flash.display.DisplayObjectContainer;  
import flash.events.Event;  

var count:uint = 0;  
var currentSWFLoader:SWFLoader;  
var swf:Object = {};  
var swfs:Array =   
[  
    {path:"child1.swf", container:this},  
    {path:"child2.swf", container:this}  
]  

function generateSWFLoader(path:String, container:DisplayObjectContainer):SWFLoader  
{  
    return new SWFLoader  
    (  
        path,  
        {  
            container: container,  
            y:         100,  
            onProgress:progressHandler,  
            onComplete:completeHandler,  
            autoPlay:  false  
        }  
    );  
}  

function loadSWF(index:uint):void  
{  
    if (currentSWFLoader)  
        currentSWFLoader.dispose(true);  

    swf = swfs[index];  
    currentSWFLoader = generateSWFLoader(swf.path, swf.container);  
    currentSWFLoader.load();  
}  

function progressHandler(e:LoaderEvent):void  
{  
    bar.scaleX = e.target.progress;  
}  

function completeHandler(e:LoaderEvent):void  
{  
    e.target.rawContent.play();  
    addEventListener(Event.ENTER_FRAME, checkFrame);  
}  

function checkFrame(e:Event):void  
{  
    if (currentSWFLoader.rawContent.currentFrame == currentSWFLoader.rawContent.totalFrames)  
    {  
        trace("swf done playing");  
        removeEventListener(Event.ENTER_FRAME, checkFrame);  
        loadSWF(++count % swfs.length);      
    }  
}  

bar.scaleX = 0;  
loadSWF(count % swfs.length); 

1 Ответ

0 голосов
/ 09 мая 2018

Вот некоторая общая информация о том, как сохранить переменную в общем объекте.

package
{
    import flash.display.Sprite;
    //import the shared object
    import flash.net.SharedObject;

    public class Main extends Sprite 
    {
        //create and store the shared object
        var my_so:SharedObject = SharedObject.getLocal("yourNameOfSharedObject");

        public function Main() 
        {
            //un-comment to save or load
            //save();
            //load();


        }

        function save(){
            //save the number 2 to the shared object in a variable called swfNumber
            my_so.data.swfNumber = 2;
        }

        function load(){
            //load the the number stored in swfNumber
            var swfNumber = my_so.data.swfNumber;
            trace(swfNumber);
        }
    }
}
...