5/14金 AS3とおやつの会最終回
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加算する。
/*
* 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の順番がどうとかで大変かもだけど)。


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