Zoeken…


Basis responsieve applicatie

package
{
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;

    public class Main extends Sprite 
    {        
        //Document Class Main Constructor
        public function Main() 
        {
            //Sometimes stage isn't available yet, so if not, wait for it before proceeding
            if (!stage) {
                addEventListener(Event.ADDED_TO_STAGE, stageReady);
            }else {
                stageReady();
            }
        }
        
        protected function stageReady(e:Event = null):void {
            //align the stage to the top left corner of the window/container
            stage.align = StageAlign.TOP_LEFT;
            //don't scale the content when the window resizes
            stage.scaleMode = StageScaleMode.NO_SCALE;
            
            //listen for when the window is resized
            stage.addEventListener(Event.RESIZE, stageResized);
        }
        
        protected function stageResized(e:Event):void {
            //use stage.stageWdith & stage.stageHeight to repostion and resize items
        }   
    }
}

Langdurige processen uitvoeren en geen niet-reagerende toepassing krijgen

Er zijn situaties waarin u iets heel groots in uw Flash-toepassing moet berekenen, zonder de gebruikerservaring te onderbreken. Hiervoor moet je je langdurige proces bedenken als een meerstappenproces met opgeslagen status tussen iteraties. U moet bijvoorbeeld een achtergrondupdate van veel interne objecten uitvoeren, maar als u ze allemaal tegelijk wilt bijwerken met een eenvoudige for each (var o in objects) { o.update(); } , Reageert Flash (of niet zo kort) niet meer op de gebruiker. U moet dus een of meerdere updates per frame uitvoeren.

private var processing:Boolean;      // are we in the middle of processing
private var lastIndex:int;           // where did we finish last time
var objects:Vector.<UpdatingObject>; // the total list of objects to update
function startProcess():Boolean {
    if (processing) return false; // already processing - please wait
    startProcessing=true;
    lastIndex=0;
    if (!hasEventListener(Event.ENTER_FRAME,iterate)) 
        addEventListener(Event.ENTER_FRAME,iterate); // enable iterating via listener
}
private function iterate(e:Event):void {
    if (!processing) return; // not processing - skip listener
    objects[lastIndex].update(); // perform a quantum of the big process
    lastIndex++; // advance in the big process
    if (lastIndex==objects.length) {
        processing=false; // finished, clear flag
    }
}

Geavanceerde verwerking kan het gebruik van getTimer() omvatten om de verstreken tijd te controleren en een andere iteratie toe te staan als de tijd niet is verstreken, het splitsen van update() in verschillende functies als bijwerken te lang is, voortgang elders weergeven, iteratieproces aanpassen om zich aan te passen aan veranderingen van de lijst met te verwerken objecten, en nog veel meer.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow