5/14は宿題の講評から始まって、ライブラリ上の画像の配置の仕方、フィルターの使い方、色の変化のさせ方。
画像の水平反転
loaderで読み込んだ画像なら、
loader.scaleX = -1;
で、水平反転になる。
ただし、もし、loader.x = 0の場合、画面から外れてしまうので注意。
loader.x = stage.stageWidth;
とかやると、画面の左端から画像が始まる。
http://wonderfl.net/c/a99u
フィルターの使い方
フィルターを使ってみよう
http://oyatsu.mztm.jp/2010/05/08/filters/
色を変化させてみよう。
例えばloaderで読み込んだインスタンス(Spriteや画像など)を変色するばあいは次のように行う。
1 |
loader.transform.colorTransform = new ColorTransform(1,1,1,1,255,0,0,0); |
デフォルト値は
new ColorTransform(1,1,1,1,0,0,0,0);
で、前半の4つはRGBAの元の色から何倍するか。1は1倍なので変化無し。
後半の4つはRGBAの元の値に加算する量(-255〜255)
例えば
new ColorTransform(0.5,1,1,1,0,0,0,0)
の場合は、赤の成分のみを半分にする、という意味。
new ColorTransform(1,1,1,1,255,0,0,0)
なら、赤の成分だけを255加算する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/* * Loaderごとステージに置く例 * 読み込んだ画像の色を変化させる。 * */ package { import flash.display.Loader; import flash.display.Sprite; import flash.net.URLRequest; import flash.geom.ColorTransform; [SWF(backgroundColor="0xCCCCCC")] public class Main extends Sprite { public function Main() { var loader:Loader = new Loader(); var uRLRequest:URLRequest = new URLRequest("http://assets.wonderfl.net/images/related_images/b/b1/b1a6/b1a642c6afafa6148d3be3e2732c5627a9e490bb"); loader.load(uRLRequest); //Loaderごとステージに置く例 addChild(loader); //ColorTransformを使うと色を変化させられる。 //new ColorTransform(1,1,1,1,255,0,0,0); //の前半の4つはRGBAの元の色から何倍するか。1は1倍なので変化無し。 //後半の4つはRGBAの元の値に加算する量(-255〜255); loader.transform.colorTransform = new ColorTransform(1,1,1,1,255,0,0,0); } } } |
授業で作ったコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
package{ import flash.display.Sprite; import flash.display.MovieClip; import flash.display.Bitmap; import flash.display.BitmapData; import flash.filters.BlurFilter; import flash.filters.DropShadowFilter; import flash.geom.ColorTransform; public class Main extends Sprite{ public function Main(){ var bd:BitmapData = new gomacha(0,0); var bitmap:Bitmap = new Bitmap(bd); this.addChild(bitmap); bitmap.x = 100; bitmap.y = 100; var dropShadow:DropShadowFilter = new DropShadowFilter(); dropShadow.color = 0xFF0000; var blur:BlurFilter = new BlurFilter(); blur.blurX = 16; blur.blurY = 0; bitmap.filters = [dropShadow,blur]; bitmap.transform.colorTransform = new ColorTransform(1,1,1,1,255,0,0,0); var sp:MovieClip = new shikaku(); sp.gotoAndStop(10); this.addChild(sp); } } } |
最終回
AS3だけの会は初めてだったので、どんな風に進めればいいか試行錯誤の連続だった。なるべく、触って楽しい部分を優先的にやった。結局、クラスまわりは授業の内容としてはできなかった。有用さを実感しながら最低限でも説明するには、あと3回は必要だと思った。ごちゃごちゃになっちゃう→クラスを使うことでこんなに便利→さらにこんな機能もあるよ。という順番が必要なはず。「functionでまとめるだけじゃだめなの?」にちゃんと答えるのはそんなに簡単じゃない。
http://slashdot.jp/developers/article.pl?sid=10/05/06/0923253
でも、Tweenerはやったので、世の中には便利なものがある、というのは伝わったはず。
あと、Progressionもやらなかった。少なくともクラスベースのProgressionは、便利機能がありすぎて、初心者にはAS3の書き方が身に付かないと思う。クラスの理解のその先だよね。当たり前だけど。
一つ心残りが3Dまわり。FlashCS3も含めていたのでできなかったが、CS4以上だったら、とりあえずY軸回転をさせれば楽しさも増えたのに。次回以降はCS4以上にしようかな(それでも結局appendRotationの順番がどうとかで大変かもだけど)。