Flashとおやつの会

おやつを食べながらFlashとかを勉強しよう

5/14金 AS3とおやつの会最終回

with 3 comments

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や画像など)を変色するばあいは次のように行う。

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加算する。

読み込んだ画像を変色する – wonderfl build flash online
/*
 * 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);
		}
	}
}

授業で作ったコード

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の順番がどうとかで大変かもだけど)。

Written by 梅原

2010/5/15 at 8:37 pm

3 Responses to '5/14金 AS3とおやつの会最終回'

Subscribe to comments with RSS or TrackBack to '5/14金 AS3とおやつの会最終回'.

  1. お世話になりありがとうございました。
    自分の限界に挑戦してる感はありますが、細々と勉強を続けて行こうと思います。
    早速ですが質問させてください。
    tweenerでflashファイルで作成したmcを動かそうとしたところ動いてくれません。。
    wonderflにコードだけ貼っておきました。
    http://wonderfl.net/c/g2gc
    flashで見るとmcはちゃんと表示されるしエラーもでないのですがマウスに反応しません。どこが間違ってるんでしょうか・・・
    またwonderflだけで作る場合、flashで作ったmcを読み込むことはできるのでしょうか?
    よろしくお願いします!

    akko

    2010/5/18 at 10:33

  2. http://wonderfl.net/c/bxcS

    var mc:MovieClip = new sikaku();
    じゃなくて、
    mc = new sikaku();
    だと思います。
    なぜならそれより前の行で
    private var mc:MovieClip;
    としていて、さらに
    onClickの中でmcを呼び出しているからです。
    このへんは、もっと丁寧に教えた方がよかったみたいですね。
    次は気をつけます。

    umehara

    2010/5/18 at 11:44

  3. ありがとうございます。
    わかりました。結局まだまだ理解できてないんですね・・・
    とにかくいっぱい作ってみます。

    akko

    2010/5/18 at 13:43

Leave a Reply