“FlashPlatform Initialization”的版本间的差异

来自Blueidea
跳转至: 导航搜索
舞台尺寸的軟匹配:
 
(未显示同一用户的4个中间版本)
第4行: 第4行:
  
 
==舞台尺寸的軟匹配:==
 
==舞台尺寸的軟匹配:==
 +
 +
此示例識別舞台大小的修改並始終以一個藍色背景填充。
 
<syntaxhighlight lang="actionscript">
 
<syntaxhighlight lang="actionscript">
/*
 
~~ Blueidea wiki [Category:Flash platform]~~
 
www.blueidea.com
 
*/
 
 
package {
 
package {
 
   import flash.display.Shape;
 
   import flash.display.Shape;
第18行: 第16行:
 
   // ${1}
 
   // ${1}
 
   /**
 
   /**
   * The <code>Molehill</code> class.<br/>
+
   * The <code>Test</code> class.<br/>
 
   */
 
   */
 
   public class Test extends Sprite {
 
   public class Test extends Sprite {
第29行: 第27行:
 
       stage.scaleMode = StageScaleMode.NO_SCALE;
 
       stage.scaleMode = StageScaleMode.NO_SCALE;
 
       // 待會用來填充舞台。
 
       // 待會用來填充舞台。
       $shape = new Shape();
+
       $border = new Shape();
 +
      addChild($border);
 +
      // 初始時先繪製一次。
 
       repaintBorder(stage.stageWidth, stage.stageHeight);
 
       repaintBorder(stage.stageWidth, stage.stageHeight);
 +
      // 監聽舞台大小的改變。
 
       stage.addEventListener(Event.RESIZE, stage_resizeHandler);
 
       stage.addEventListener(Event.RESIZE, stage_resizeHandler);
 
     }
 
     }
第57行: 第58行:
 
如果您使用的時Flash Builder那麼可以在${1}處加入使長寬為900 x 600並指定60fps刷新率。
 
如果您使用的時Flash Builder那麼可以在${1}處加入使長寬為900 x 600並指定60fps刷新率。
 
<syntaxhighlight lang="actionscript">
 
<syntaxhighlight lang="actionscript">
 +
// ${1}
 
[SWF(width="900", height="500", frameRate="60")]
 
[SWF(width="900", height="500", frameRate="60")]
 +
</syntaxhighlight>
 +
 +
最後在舞台尺寸改變時重新繪製邊框。
 +
<syntaxhighlight lang="actionscript">
 +
// ${2}
 +
$border.graphics.clear();
 +
$border.graphics.beginFill(0x00CCFF);
 +
$border.graphics.drawRect(0, 0, width, height);
 +
$border.graphics.endFill();
 +
</syntaxhighlight>
 +
 +
如果您操作無誤完成如上設定後會看見以下畫面。
 +
<center>[[Image:FlashPlatform_InitStage.png]]</center>
 +
 +
 +
==stage軟獲取==
 +
假設這個類的swf被另外一個swf所加載。那麼一定會悲劇。
 +
<syntaxhighlight lang="actionscript">
 +
package {
 +
  import flash.display.Sprite;
 +
  import flash.display.StageAlign;
 +
  import flash.display.StageScaleMode;
 +
  /**
 +
  * The <code>Test</code> class.<br/>
 +
  */
 +
  public class Test extends Sprite {
 +
    //==========================================================================
 +
    //  Constructor
 +
    //==========================================================================
 +
    /** Constructor */
 +
    public function Test() {
 +
      stage.align = StageAlign.TOP_LEFT;
 +
      stage.scaleMode = StageScaleMode.NO_SCALE;
 +
    }
 +
  } // <- end class ->
 +
}
 +
</syntaxhighlight>
 +
使用stage引用的軟獲取。可以有效避免悲劇和蛀牙的發生。
 +
<syntaxhighlight lang="actionscript">
 +
package {
 +
  import flash.display.Sprite;
 +
  import flash.display.StageAlign;
 +
  import flash.display.StageScaleMode;
 +
  import flash.events.Event;
 +
 +
  /**
 +
  * The <code>Test</code> class.<br/>
 +
  */
 +
  public class Test extends Sprite {
 +
    //==========================================================================
 +
    //  Constructor
 +
    //==========================================================================
 +
    /** Constructor */
 +
    public function Test() {
 +
      addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
 +
    }
 +
    //==========================================================================
 +
    //  Event listeners
 +
    //==========================================================================
 +
    private function addedToStageHandler(event:Event):void {
 +
      removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
 +
      stage.align = StageAlign.TOP_LEFT;
 +
      stage.scaleMode = StageScaleMode.NO_SCALE;
 +
    }
 +
  } // <- end class ->
 +
}
 +
</syntaxhighlight>
 +
 +
==限定顯示範圍==
 +
你並不需要給stage指定mask
 +
只需要
 +
<syntaxhighlight lang="actionscript">
 +
stage.scrollRect = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
 
</syntaxhighlight>
 
</syntaxhighlight>

2011-04-14T02:37:49的最后版本

Flash platform 應用初始化常用設置。


舞台尺寸的軟匹配:

此示例識別舞台大小的修改並始終以一個藍色背景填充。

package {
  import flash.display.Shape;
  import flash.display.Sprite;
  import flash.display.StageAlign;
  import flash.display.StageScaleMode;
  import flash.events.Event;
 
  // ${1}
  /**
   * The <code>Test</code> class.<br/>
   */
  public class Test extends Sprite {
    //==========================================================================
    //  Constructor
    //==========================================================================
    /** Constructor */
    public function Test() {
      stage.align = StageAlign.TOP_LEFT;
      stage.scaleMode = StageScaleMode.NO_SCALE;
      // 待會用來填充舞台。
      $border = new Shape();
      addChild($border);
      // 初始時先繪製一次。
      repaintBorder(stage.stageWidth, stage.stageHeight);
      // 監聽舞台大小的改變。
      stage.addEventListener(Event.RESIZE, stage_resizeHandler);
    }
    private var $border:Shape;
    private function repaintBorder(width:uint, height:uint):void {
      // ${2}
    }
    //==========================================================================
    //  Event listeners
    //==========================================================================
    private function stage_resizeHandler(event:Event):void {
      repaintBorder(stage.stageWidth, stage.height);
    }
  } // <- end class ->
}

通常我們會對stage做如上設定讓舞台在左上角對齊,並且當FlashPlayer尺寸設置時令縮放保持不變。

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;


接下來對FlashPlayer設定一個初始大小。如果您使用的Flash IDE那麼直接在設置面板設置即可。 如果您使用的時Flash Builder那麼可以在${1}處加入使長寬為900 x 600並指定60fps刷新率。

// ${1}
[SWF(width="900", height="500", frameRate="60")]

最後在舞台尺寸改變時重新繪製邊框。

// ${2}
$border.graphics.clear();
$border.graphics.beginFill(0x00CCFF);
$border.graphics.drawRect(0, 0, width, height);
$border.graphics.endFill();

如果您操作無誤完成如上設定後會看見以下畫面。

FlashPlatform InitStage.png


stage軟獲取

假設這個類的swf被另外一個swf所加載。那麼一定會悲劇。

package {
  import flash.display.Sprite;
  import flash.display.StageAlign;
  import flash.display.StageScaleMode;
  /**
   * The <code>Test</code> class.<br/>
   */
  public class Test extends Sprite {
    //==========================================================================
    //  Constructor
    //==========================================================================
    /** Constructor */
    public function Test() {
      stage.align = StageAlign.TOP_LEFT;
      stage.scaleMode = StageScaleMode.NO_SCALE;
    }
  } // <- end class ->
}

使用stage引用的軟獲取。可以有效避免悲劇和蛀牙的發生。

package {
  import flash.display.Sprite;
  import flash.display.StageAlign;
  import flash.display.StageScaleMode;
  import flash.events.Event;
 
  /**
   * The <code>Test</code> class.<br/>
   */
  public class Test extends Sprite {
    //==========================================================================
    //  Constructor
    //==========================================================================
    /** Constructor */
    public function Test() {
      addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
    }
    //==========================================================================
    //  Event listeners
    //==========================================================================
    private function addedToStageHandler(event:Event):void {
      removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
      stage.align = StageAlign.TOP_LEFT;
      stage.scaleMode = StageScaleMode.NO_SCALE;
    }
  } // <- end class ->
}

限定顯示範圍

你並不需要給stage指定mask 只需要

stage.scrollRect = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);