StarlingフレームワークでつくったQuadインスタンスに、カラーとアルファのグラデーションを設定します。Starlingフレームワークのごく基本的な使い方とQuadインスタンスのつくり方については、「Starlingフレームワークを使う」で解説しています。また本稿では、Flash Professional CS5.5を用います(CS5でもほぼ同様)。
01 Quadインスタンスの頂点にカラーを定める
まず、Starlingフレームワークでステージの真ん中に黒い正方形のQuadインスタンスを置きます(図001)。そこで、Starlingフレームワークで表示リストのルートにオブジェクトをつくるクラス(本稿ではStarlingフレームワークの「ルートクラス」と呼びます)として、以下のクラスMySpriteを定めます(スクリプト001)。
図001■ステージの真ん中にQuadインスタンスの黒い正方形を描く
スクリプト001■黒い正方形のQuadインスタンスをステージの真ん中に置くStarlingルートクラスの定義
// ActionScript 3.0クラス定義ファイル: MySprite.as
- package {
- import starling.display.Sprite;
- import starling.display.Stage;
- import starling.display.Quad;
- import starling.events.Event;
- public class MySprite extends Sprite {
- private var square:Quad;
- private var nUnit:Number = 100;
- public function MySprite() {
- addEventListener(Event.ADDED_TO_STAGE, initialize);
- }
- private function initialize(eventObject:Event):void {
- square = new Quad(nUnit, nUnit, 0x0);
- addChild(square);
- square.x = stage.stageWidth / 2;
- square.y = stage.stageHeight / 2;
- square.pivotX = nUnit / 2;
- square.pivotY = nUnit / 2;
- }
- }
- }
|
そして、上記ActionScript(AS)ファイルと同階層に保存するFlashムービー(FLA)ファイルから、つぎのようなフレームアクションでルートクラスを呼出します。これらのスクリプトについて詳しくは、前出「Starlingフレームワークを使う」をご参照ください。
// フレームアクション: メインタイムライン
import starling.core.Starling;
var myStarling:Starling = new Starling(MySprite, stage);
myStarling.start();
|
Quadインスタンスには、各頂点ごとにRGBカラーやアルファが定められます。異なる設定を与えた頂点の間は、値が滑らかに変わります。インスタンスの4頂点には、つぎのように0から3までの整数で頂点番号が決まっています(図002)。
図002■Quadインスタンスの4頂点の番号
0
|
|
1
|
|
|
|
2
|
|
3
|
Quadインスタンスの頂点のカラーは、Quad.setVertexColor()メソッドで定めます。ふたつの引数には、頂点番号の整数とRBGカラー値を渡します。
Quad.setVertexColor(頂点番号, RBGカラー)
前掲スクリプト001でつくったQuadインスタンスの頂点ごとに異なったカラーを定めてみましょう。つぎのスクリプト002は、Quadインスタンスに対してQuad.setVertexColor()メソッドを呼出し、頂点1から3にそれぞれ赤(0xFF0000)と緑(0x00FF00)と青(0x0000FF)を設定しました(第19〜21行目)。異なるカラーを定めた頂点の間は、グラデーションで塗られます(図003)。
スクリプト002■StarlingフレームワークのQuadインスタンスに頂点ごとのカラーを定める
// ActionScript 3.0クラス定義ファイル: MySprite.as
- package {
- import starling.display.Sprite;
- import starling.display.Stage;
- import starling.display.Quad;
- import starling.events.Event;
- public class MySprite extends Sprite {
- private var square:Quad;
- private var nUnit:Number = 100;
- public function MySprite() {
- addEventListener(Event.ADDED_TO_STAGE, initialize);
- }
- private function initialize(eventObject:Event):void {
- square = new Quad(nUnit, nUnit, 0x0);
- addChild(square);
- square.x = stage.stageWidth / 2;
- square.y = stage.stageHeight / 2;
- square.pivotX = nUnit / 2;
- square.pivotY = nUnit / 2;
- square.setVertexColor(1, 0xFF0000);
- square.setVertexColor(2, 0x00FF00);
- square.setVertexColor(3, 0x0000FF);
- }
- }
- }
|
図003■Quadインスタンスの頂点ごとに異なったカラーが設定された
02 Quadインスタンスの頂点にアルファを加える
Quadインスタンスのアルファも、カラーと同じように頂点ごとに定められます。用いるのは、Quad.setVertexAlpha()メソッドです。Quad.setVertexColor()メソッドと同じく引数はふたつで、頂点番号の整数とアルファ値を渡します。
Quadオブジェクト.setVertexAlpha(頂点番号, アルファ)
前掲スクリプト002でつくったQuadインスタンスの頂点に、さらにアルファを加えます。つぎのスクリプト002は、Quadインスタンスに対してQuad.setVertexAlpha()メソッドを呼出し、頂点0をアルファ0に設定しました(第19行目)。
スクリプト003■Quadインスタンスの頂点にアルファを加えて回転する
// ActionScript 3.0クラス定義ファイル: MySprite.as
- package {
- import starling.display.Sprite;
- import starling.display.Stage;
- import starling.display.Quad;
- import starling.events.Event;
- public class MySprite extends Sprite {
- private var square:Quad;
- private var nUnit:Number = 100;
- public function MySprite() {
- addEventListener(Event.ADDED_TO_STAGE, initialize);
- }
- private function initialize(eventObject:Event):void {
- square = new Quad(nUnit, nUnit, 0x0);
- addChild(square);
- square.x = stage.stageWidth / 2;
- square.y = stage.stageHeight / 2;
- square.pivotX = nUnit / 2;
- square.pivotY = nUnit / 2;
- square.setVertexAlpha(0, 0);
- square.setVertexColor(1, 0xFF0000);
- square.setVertexColor(2, 0x00FF00);
- square.setVertexColor(3, 0x0000FF);
- addEventListener(Event.ENTER_FRAME, rotate);
- }
- private function rotate(eventObject:Event):void {
- square.rotation += 0.1;
- }
- }
- }
|
さらに、イベントEvent.ENTER_FRAMEに登録したリスナー関数(rotate())で、Quadインスタンスに回転のアニメーションを加えました(第23および第25〜27行目)。[パブリッシュプレビュー]で確かめると、頂点ごとに異なったカラーとアルファを設定したQuadインスタンスが回ります(図004)。なお、回転のアニメーションについては、前出「Starlingフレームワークを使う」をご参照ください。
図004■頂点にカラーとアルファを設定されたQuadインスタンスが回る
気をつけなければならないのは、Quad.setVertexAlpha()メソッドでインスタンスの頂点にアルファを加えるのは、Quad.setVertexColor()メソッドによるカラーの定めの後でなければならないということです。なぜなら、Quad.setVertexColor()メソッドはカラーを定めるだけでなく、アルファも1に設定し直してしまうからです。
たとえば、前掲スクリプト003第20行目の頂点番号1のカラー設定の前につぎのようにアルファを0に変えても、アルファ値は1に戻されてしまいます。なお、頂点のカラーやアルファの値を確かめるには、Quad.getVertexColor()およびQuad.getVertexAlpha()メソッドを用います。引数はともに頂点番号です。
square.setVertexAlpha(1, 0);
- square.setVertexColor(1, 0xFF0000);
trace(square.getVertexAlpha(1)); // 出力: 1
|
作成者: 野中文雄
作成日: 2012年2月8日