ActionScript 3
반응 형 응용 프로그램 설계
수색…
기본 응답 성 응용 프로그램
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
}
}
}
오랜 프로세스 수행 및 응답하지 않는 애플리케이션
사용자의 경험을 방해하지 않으면 서 Flash 응용 프로그램에서 실제로 큰 것을 계산해야하는 상황이 있습니다. 이를 위해서는 긴 프로세스를 반복간에 저장된 상태의 다중 단계 프로세스로 고안해야합니다. 예를 들어 많은 내부 객체에 대한 백그라운드 업데이트를 수행해야하지만 각각의 객체를 한 번에 모두 업데이트하려는 경우 for each (var o in objects) { o.update(); }
, 플래시가 짧게 (또는 짧게) 사용자에게 반응하지 않게됩니다. 따라서 프레임 당 하나 또는 여러 개의 업데이트를 수행해야합니다.
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
}
}
고급 처리에는 경과 시간을 확인하기 위해 getTimer()
를 사용하고 시간이 경과하지 않은 경우 다른 반복을 허용하고 업데이트가 너무 길면 update()
를 여러 함수로 분할하고 다른 곳에서 진행 상황을 표시하고 반복 프로세스를 조정하여 처리 할 개체 목록 및 기타 여러 가지가 있습니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow