Home > Tags > flash
flash
[Flash Lite 1.1]制作前に知っておきたいことをQ&A形式でまとめてみた
- 2009-12-17 (木)
- flash lite | study

最近、GREEやモバゲーにハマっている友達を見て、携帯Flashの需要は今後もますます増えるだろうなぁと実感。
私は携帯Flashは面倒くさそう(特にFlash Lite 1.1)という理由であまり触ったことがありませんでしたが、
やっぱ触った経験がある方がいいなぁと思って最近サンプルを作ってみてます。
Flash Lite 2.0以上であれば、まだスクリプティングは楽そうですが、
やっぱり主流はしばらくFlash Lite 1.1でしょって事で、1.1に挑戦!
私はFlash触ったときすでにAS2.0だったので、AS1.0なFlash Lite 1.1での制作は初めて知ることがたくさんありました。
また携帯ならではの制約や関数もあって、もう面倒くさい!
でも、Flash Lite 1.1のお作法に慣れることができれば、そんなに難しくないなって思いました。
と言う事で自分の備忘録として、Flash Liteの基礎知識や、Flash Lite1.1コンテンツ制作中にぶつかるギモンをQ&A形式でまとめていきまっす!!
Q.容量制限はどんな感じ?
基本的にdocomo、auは1ファイルにつき100KB、SoftBankは150KBとなっている。
ただしauでは、「一回の通信につき100KB」なので、loadMovieを繰り返せばメモリの許す限り、大量のコンテンツを表示させることができる。
各キャリアの容量制限
| キャリア | バージョン | Flash Player | 参考メモリサイズ ※機種ごとに変動 |
|---|---|---|---|
| docomo | 1.0 | Flash4相当 | FOMA 最大100KB MOVA 最大20KB |
| 1.1 | Flash4相当 | 最大100KB ※外部load分含む |
|
| 3.0 | Flash8相当 | 最大100KB ※外部load分含む ※ボタンアクションの場合 1セッションにつき500KBまで |
|
| 3.1 | Flash8相当 | 最大100KB ※外部load分含む ※ボタンアクションの場合 1セッションにつき500KBまで |
|
| 3.1 iモードブラウザ2.0端末 | Flash8相当 | 最大500KB ※外部load分含む ※ボタンアクションの場合 1セッションにつき500KBまで ※FLVはプログレッシブ再生 のみ10MBまで |
|
| au | 1.1 | Flash4相当 | WIN 最大100KB 1X 最大48KB ※1セッションにつき |
| 2.0 | Flash7相当 | 最大100KB ※1セッションにつき |
|
| 3.0 | Flash7相当 | 最大100KB ※1セッションにつき |
|
| SoftBank | 1.1 | Flash4相当 | 最大100KB |
| 2.0 | Flash7相当 | 最大150KB ※1セッションにつき |
|
| 3.0 | Flash7相当 | 最大150KB ※1セッションにつき |
Q.メモリ制限はどんな感じ?
Flash Liteに割り当てられるメモリの量はパソコン用のFlashに比べて貧弱。
コンテンツ開発をしているときにビットマップが赤く表示されることがあれば、メモリ不足のサイン。
各キャリアの搭載メモリの目安
| キャリア | バージョン | 参考メモリサイズ ※機種ごとに変動 |
|---|---|---|
| docomo | 1.0 | 200~400KB |
| 1.1 | 2MB程度 | |
| 3.0 | 3MB程度 | |
| 3.1 | 3MB程度 | |
| 3.1 iモードブラウザ2.0端末 | 15MB程度 | |
| au | 1.1 | 1MB程度 |
| 2.0 | 3MB程度 | |
| 3.0 | 3MB程度 | |
| SoftBank | 1.1 | 1MB程度 |
| 2.0 | 2MB程度 | |
| 3.0 | 3MB程度 |
メモリの使用状況を実機で確認するには
fscommand2を使用します。
//useMemoryをテキストフィールドに表示させれば確認できる
useMemory=fscommand2("GetTotalPlayerMemory")-fscommand2("GetFreePlayerMemory");
Q.各キャリアのサウンド形式はどんな感じ?
NTTドコモではMIDI、auとソフトバンクでは「SMAF」という携帯電話などに向けたサウンド形式が採用されている。
MIDIは機種の音源を使用するために、同じ曲でも機種ごとに音色が異なる可能性がある。
一方、SMAFは波形データであるため、基本的には同じ様な音色で再生することが可能。
各キャリアのサウンド形式
| キャリア | バージョン | 参考メモリサイズ ※機種ごとに変動 |
|---|---|---|
| docomo | 1.1~3.1 | MIDI、SMF |
| 3.1 iモードブラウザ2.0端末 | MIDI、SMF、MP3 | |
| au | 全バージョン | SMAF(一部MIDI) |
| SoftBank |
docomo端末でのmp3再生
docomo Flash Lite 3.1iモードブラウザ2.0端末では、MP3の再生が可能で、idタグの情報も取得できる。
MP3の容量はswfとあわせて500KBまで。
wav形式⇒SMAF形式変換ツール
YAMAHA製 Wave to SMAFコンバータ(無料)
http://smaf-yamaha.com/jp/tools/downloads.html#converter
Q.一般的なガイドラインが知りたい!
最新のFlash Lite3.1が普及するには、まだまだ時間が必要。
今後しばらくはFlash Lite1.1コンテンツで制作するのが主流。
一番普及台数が多いdocomo向けのFlash Lite1.1に合わせた参考ガイドライン
| Flash Liteのバージョン | Flash Lite 1.1 |
|---|---|
| 画面サイズ | 横 240px × 縦 240px~320px |
| 使用メモリ | 1000KB |
| フレームレート | 8~10fps |
| フォントサイズ | 小:12px、大:24px |
| 書き出しサイズ | 100KB |
Q.onEnterFrameが使いたい!
Flash Lite 1.1ではonEnterFrameが使えません。
1フレーム目にループさせたい処理を書いて、
2フレームにgotoAndStop(1);と書いてタイムライン上でループ処理を行うようにします。
Q.インスタンスにアクセスしたい!
tellTarget関数を使います。
ルートからインスタンスmcのフレームを2に移動する例
/*Flash Lite 2.0以降*/
mc.gotoAndStop(2);/*Flash Lite 1.1の場合*/
tellTarget(”mc”){
gotoAndStop(2);
}
なお、Flash Lite 1.1はドットシンタックスではなく、スラッシュシンタックスなので、記述は下記のような感じになります。
| ドットシンタックス(AS2.0) | スラッシュシンタックス |
|---|---|
| mc.child | mc/child |
| _parent.mc.child | ../mc/child |
| _root.mc.child | /mc/child |
Q.インスタンスのプロパティを変更したい!
setProperty関数を使います。
インスタンスmcの_xを100にする例
/*Flash Lite 2.0以降*/
mc.x=100;
/*Flash Lite 1.1*/
setProperty(”mc”,_x,100);
第1引数にインスタンス名、第2引数にプロパティ、第3引数に値をいれます。
Q.外部へのアクセスはどうやってやるの?
外部へのアクセスはgetURL、LoadMovie、LoadMovieNum、LoadVariables、loadVariablesNumが使用できます。
外部へのアクセスはボタンアクションに設定すること
外部アクセスは必ずボタンアクションに設定されていないといけない。
ボタンアクションは「決定キー」「数字キー(0~9、#、*)」を押すことによるイベントのこと。
また、上下キーにはボタンアクションを割り当てることができない。上下キーはフォーカス移動のみに使用する。
//OK:数字キーは外部通信可能
on(KeyPress "1"){
getURL("a.swf");
}//NG:上下キーはフォーカス移動のみ
on(KeyPress ""){//←NG:上、下、右、左はボタンアクションを設定できない。
getURL("a.swf");
}
ボタンアクション一回につき1通信しか無理
1回のボタンアクションに大して、1回の通信という制限がある。
1回のボタンアクションに対して、2つ以上の外部通信を記述してもエラーとなり、パブリッシュできない。
//NG:ハンドラ内のアクションは無視される
on(press){
getURL("a.swf");
getURL("b.swf");
}
Q.携帯電話の様々な情報を取得したい!
基本的にどんなコンテンツでも記法は同じだと思うのでスニペットを載せておきます。
時間の取得
/*時・分・秒の取得*/
hour = fscommand2("GetTimeHours");//時間
minute = fscommand2("GetTimeMinutes");//分
second = fscommand2("GetTimeSeconds");//秒/*時・分・秒が10以下の場合先頭に0を足す*/
if (hour<10) {
hour = "0" add hour;
}
if (minute<10) {
minute = "0" add minute;
}
if (second<10) {
second = "0" add second;
}
年月日の取得
/*年・月・日の取得*/
year = fscommand2("GetDateYear");//年
month = fscommand2("GetDateMonth");//月
day = fscommand2("GetDateDay");//日/*年・月・日が10以下の場合先頭に0を足す*/
if (year<10) {
year = "0" add year;
}
if (month<10) {
month = "0" add month;
}
if (day<10) {
day = "0" add day;
}
曜日の取得
/*曜日の取得(0~6⇒日~土)*/
weekday = fscommand2("GetDateWeekday");/*取得した数字によって表示する文字列を変える*/
if (weekday == 0) {//日
wd = "sun";
} else if (weekday == 1) {//月
wd = "mon";
} else if (weekday == 2) {//火
wd = "tue";
} else if (weekday == 3) {//水
wd = "wed";
} else if (weekday == 4) {//木
wd = "thu";
} else if (weekday == 5) {//金
wd = "fri";
} else if (weekday == 6) {//土
wd = "sat";
}
電波状況の取得
/*電波状況の取得(インスタンスsignalの表示を変更する例)
**docomo:0-3,au:0-4,SoftBank:0-4(0は圏外)*/
tellTarget ("signal") {
qframe = fscommand2("GetSignalLevel");
if (qframe>4) {
qframe = 4;
}
gotoAndStop(qframe);
}
電池残量の取得
/*電池残量の取得(インスタンスbatteryの表示を変更する例)
**docomo,au,SoftBank共通:0-3*/
tellTarget ("battery") {
gotoAndStop(fscommand2("GetBatteryLevel")+1);
}
電源情報の取得
/*電池残量の取得(インスタンスchargeの表示を変更する例)
**0:バッテリー使用、1:外部電源で動作*/
tellTarget ("charge") {
gotoAndStop( fscommand2("GetPowerSouce")+1);
}
Q.電話へのリンクはどうするの?
下記のように記述すればOK。
/*電話の発信*/
getURL("tel:090xxxxxxxx");
Q.GPS情報の送信はできるの?
auとSoftBankは可能。docomoは不可能。
/*GPS情報送信*/
//auの場合(Flash Lite 2.0以降)
getURL("device:location?url=CGIのURL");//SoftBankの場合(Flash Lite 2.0以降)
getURL("llocation:auto?url=CGIのURL");//docomoの場合はFlash LiteからGPS機能は呼び出せない
参考にした本

Flash Liteで作る携帯コンテンツ実践教科書 (Web Designing BOOKS)
数少ないFlash Lite本の中で、わかりやすい良書。
16個のサンプルを掲載。
特に最後の方に掲載されているFlash Liteコンテンツに関する知識やTipsがうまくまとめられていて、すごく参考になりました!
なんか、amazonでは評判悪いけど、PCでのFlash制作をある程度経験ある方ならわかりやすいと思います!
関連する投稿
- Comments: 0
- Trackbacks: 0
[progression勉強]実制作でつまづいたとこをQ&A形式でまとめてみた
- 2009-04-28 (火)
- progression | study

最近、仕事の案件でflash案件がきた(てかflashにした)ので、
初めてprogressionを使って制作してました。
まだprogressionでの制作方法やas3のことすら、熟知していないのでいろんなところで
つまづいきました。。
ちょっとしたとこでつまづいても解決法をみつけだすのに長時間悩んだりすることが結構あったので、
実制作でprogressionを使ってみて私が躓いたとこや疑問に思ったことと、ググったりして知った答えを
書きとめていたものを、
Q&A形式でまとめてみました!
Q.Castのコンストラクタからステージを参照できない
ステージリサイズで位置とかサイズとか可変させようと思ってコンストラクタで、
リサイズ時実行させる関数をstageにaddEventListenerさせようとしたらコンパイルエラー。
stageの参照は _onCastAddedの中なら可能です。
要は表示オブジェクトコンテナに追加されたタイミングではじめて参照出来るようになるってことですね。
よく考えたらわかることなのですが、なんでエラーが返ってくるのか理解できずに躓いてました。。。
- protected override function _onCastAdded():void {
- stage.addEventListener( Event.RESIZE, onResizeHandler);
- onResizeHandler(null);
- addCommand(
- // 任意のコマンドを記述してください。
- new Trace(stage.stageWidth);
- );
- }
これでOK!
Q異なるシーン間で値の受け渡しがしたい!
progressionのget~系メソッドがいいらしい!
http://www.northprint.net/2009/03/progressionget.html
私は名前つけるのめんどくさかったのでgetSceneBySceneId使いました!
http://flabaka.com/blog/?p=577
たとえばIndexSceneの_testという値を参照する。
var a:IndexScene = IndexScene(getSceneBySceneId(new SceneId("/index")));
trace(a._test);
これは表示リストに追加されてからでないと無理なので、コンストラクタではなく、_onCastAddedの中でやること!
あとIndexSceneのインポートを忘れずに!
Q.progressionのrootはどうやって参照?
trick7さんの記事を参考に!
http://www.trick7.com/blog/2008/12/09-114334.php
Q.castButtonを追加したときも何か動かしたい!
castButton用castSpriteを作ってやる方法を参考にさせてもらいました!
http://narayama.heteml.jp/2008/09/castbuttoncastsprite.html
Q.あれ?onLoadとonInitの違いは何やったっけ?
これ、初歩的ですが、何度も何度もnorthprintさんのgihyoの記事に掲載されてたこの図で確認してます。。。
![]()
Q.tweeneerのコマンドはあるけど、tweensyのコマンドは用意されてないの?
コミッターの seyself さんが、 tweensy をコマンドとして使用できる DoTweensy コマンドを作成してくださっているそうです。
http://trac.progression.jp/browser/experiments/sayself/extensions/classes/com/seyself/extras/progression
Q.castButtonでsceneIdを指定してじゃなく次のシーンに飛ばすにはどうするの?
次のシーンのsceneIdを取得するには
progression.current.next.sceneId;
前のシーンのsceneIdを取得するには
progression.current.previous.sceneId;
ということで、やってみる。
IndexSceneで関数nextSceneId,prevSceneIdを用意しといて、
子シーンオブジェクトの_onInitとかで
var a:IndexScene = IndexScene(getSceneBySceneId(new SceneId("/index")));
a.nextSceneId=progression.current.next.sceneId;
a.prevSceneId=progression.current.previous.sceneId;
と書き換えておいて
その子シーンオブジェクトの中のCastBtn(_nextBtnと_prevBtn)のsceneIdを書き換えてやる。
var a:IndexScene = IndexScene(getSceneBySceneId(new SceneId("/index")));
_nextBtn.sceneId=a.nextSceneId;
_prevBtn.sceneId=a.prevSceneId;
これが一番良い方法かわからないですが、参考程度に。
Q.castButtonでhtmlページにリンクさせるにはどうするの?
castButtonのプロパティにhrefがあるから、以下のような記述をコンストラクタにする。
href="http://kanariia.com/blog/";
sceneId プロパティと href プロパティが両方とも設定されている場合には、href プロパティの設定が優先されるそうな。
あと、windowTargetプロパティも用意されてるので、以下のように使える。いやーさすが。
href="http://kanariia.com/blog/";
windowTarget="_blank";
Q.castImageLoaderで読み込んだ画像をスムージングしたい
ExImageLoaderのプロパティにsmoothingというのがあるので、
コンストラクタで
smoothing=true;
でOK。
castImageLoaderはExImageLoaderのサブクラスなので。
ちなみにリサイズの際、縦横比を維持したい場合は
ratio=true;
でOK。
Q.castButtonの_onCastRollOverと_onCastRollOutにDoTweenerを設定したが、超速でのせたりはずしたりするとエラーがかえってくる。
こんなエラーがよくでて困ったことありませんか。
[ERROR] <DoTweener : command_2031> コマンドで CommandTimeOutError エラーが発生。
原因はコマンドが実行中なのに同じインスタンスに他のコマンドが上書きされるからだと思われる。
実行中のコマンドを中断してやることが必要。
コマンドを中断するためにどうすればよいか、でみつけたのがinterrupt()メソッド。
これを使うためにはexecute()メソッドでコマンドを実行する必要があるらしい。
じゃあaddCommand使わないでやってみよーてことで、こんな感じ。
- package myproject.btn {
- import jp.progression.casts.*;
- import jp.progression.commands.*;
- import jp.progression.events.*;
- import jp.progression.loader.*;
- import jp.progression.*;
- import jp.progression.scenes.*;
- /**
- * ...
- * @author kanariia
- */
- public class TestBtn extends CastButton {
- private var _rollOver:SerialList;
- private var _rollOut:SerialList;
- /*======================================================================*//**
- * コンストラクタ
- */
- public function TestBtn( initObject:Object = null ) {
- super( initObject );
- }
- /*======================================================================*//**
- * ユーザーが CastButton インスタンスにポインティングデバイスを合わせたときに送出されます。
- * このイベント処理の実行中には、addCommand() メソッド、及び insertCommand() メソッドによるコマンドの同期処理が行えます。
- */
- protected override function _onCastRollOver():void {
- if (_rollOut) {
- //_rollOutのコマンドをすべて解除する
- _rollOut.interrupt();
- }
- _rollOver = new SerialList();
- _rollOver.addCommand(
- new DoTweener(this, { alpha:0.5, time:0.5, transition:"easeOutExpo" } )
- );
- //コマンド実行
- _rollOver.execute();
- }
- /*======================================================================*//**
- * ユーザーが CastButton インスタンスからポインティングデバイスを離したときに送出されます。
- * このイベント処理の実行中には、addCommand() メソッド、及び insertCommand() メソッドによるコマンドの同期処理が行えます。
- */
- protected override function _onCastRollOut():void {
- if (_rollOver) {
- //_rollOverのコマンドをすべて解除する
- _rollOver.interrupt();
- }
- _rollOut = new SerialList();
- _rollOut.addCommand(
- new DoTweener(this, { alpha:1, time:0.5, transition:"easeOutExpo" } )
- );
- //コマンド実行
- _rollOut.execute();
- }
- }
- }
スマートじゃないかもしれないけど、こうすればエラーはとまります!
Q.CastButtonの無効化はどうするの?
いつものようにenabled=false;にしても、無理だったので調べました。
ボタン有効・無効を設定する
buttonEnabledプロパティが用意されていたので、
buttonEnabled=false;
でいけるみたい!
Q.ページタイトルはどうやって変えるの?
http://blog.img8.com/archives/2008/11/004207.html
SceneObjectにはtitleというプロパティがあります。
prog.sync=true;じゃないと作動しないらしい。
あと、index.htmlのタイトルがIndexSceneにたどりつくまで
表示されるので、直しておくべし。
sceneObjectのコンストラクタとかに
title="テストサイト"
みたいな感じで書けばOK。
indexSceneでほかのシーンも作ってる場合は
aboutScene.title="about|テストサイト";
て感じでOK。
IndexSceneで子・孫シーンをonLoadで一気に追加しておけば、
こんな設定も超簡単にすむw
ひとこと
自分用のメモみたいな感じなんで、きれいにまとまってるわけじゃないけど、
同じことで躓いてる人がこのエントリで救われるといいなー
関連する投稿
- Comments: 0
- Trackbacks: 1
[Adobe MAX Japan 2009]ROXIK城戸さんのアレとTweensyで観覧車やってみた
すでにたくさんのレポートが投稿されてるみたいですが、
私もAdobe MAX 2日目参加してきました!!
感想をまとめようかと思いましたが、
私と全く同じセッションを選択されているll_koba_llさんのこの記事に書いてあるまとめが、
本当に感じたこととか一緒でうまくまとめてくださってるので、
まとめるの割愛します(あんなにうまく文まとまりましぇんw)。
受けたセッションの中でも、
すぐやってみたいと思ったのが
ROXIK城戸さんが実際にコードを書いて
日本語変数でものすごくわかりやすかった
ムービークリップの座標を視点で制御するアレ。
そこで記憶とメモを基に、
サンプルを作ってみることにした。
まず準備
真ん中基準点のMC「box_mc」を作成。
セッションの時のを忠実に再現w
aの文字は動くとぶるぶるするので分解してシェイプに。
プロパティでクラスにbox_mcと設定。
サンプルたち
視点の横移動
- var 視点={x:0,y:0,angle:0,zoom:0};</p>
- <p>var ボックスたち=[];<br />
- var ポイントたち=[];</p>
- <p>ボックス追加();</p>
- <p>function ボックス追加() {<br />
- var ポイント;<br />
- var ボックス;</p>
- <p> for (var i=0; i<20; i++) {<br />
- ポイント={x:Math.random()*700,y:Math.random()*400};<br />
- ポイントたち[i]=ポイント;</p>
- <p> ボックス=new box_mc();<br />
- ボックスたち[i]=ボックス;<br />
- addChild(ボックス);<br />
- }<br />
- }</p>
- <p>function モーション(e:Event) {<br />
- 視点.x+=2;<br />
- }</p>
- <p>function レンダリング(e:Event) {<br />
- for (var i=0; i<ボックスたち.length; i++) {<br />
- var ポイント=ポイントたち[i];<br />
- var ボックス=ボックスたち[i];</p>
- <p> ボックス.x=ポイント.x-視点.x;<br />
- ボックス.y=ポイント.y-視点.y;<br />
- }<br />
- }<br />
- addEventListener(Event.ENTER_FRAME,モーション);<br />
- addEventListener(Event.ENTER_FRAME,レンダリング);
視点の回転
- var 視点={x:0,y:0,angle:0,zoom:0};</p>
- <p>var ボックスたち=[];<br />
- var ポイントたち=[];</p>
- <p>ボックス追加();</p>
- <p>function ボックス追加() {<br />
- var ポイント;<br />
- var ボックス;</p>
- <p> for (var i=0; i<20; i++) {<br />
- ポイント={x:Math.random()*700,y:Math.random()*400};<br />
- ポイントたち[i]=ポイント;</p>
- <p> ボックス=new box_mc();<br />
- ボックスたち[i]=ボックス;<br />
- addChild(ボックス);<br />
- }<br />
- }</p>
- <p>function モーション(e:Event) {<br />
- //ポイント.x+=2;<br />
- //視点.x+=2;<br />
- 視点.angle+=0.01;<br />
- }</p>
- <p>function レンダリング(e:Event) {<br />
- var cos=Math.cos(視点.angle);<br />
- var sin=Math.sin(視点.angle);</p>
- <p> for (var i=0; i<ボックスたち.length; i++) {<br />
- var ポイント=ポイントたち[i];<br />
- var ボックス=ボックスたち[i];</p>
- <p> var 視点からの差x=ポイント.x-視点.x;<br />
- var 視点からの差y=ポイント.y-視点.y;</p>
- <p> ボックス.x=視点からの差x*cos-視点からの差y*sin+350;<br />
- ボックス.y=視点からの差x*sin+視点からの差y*cos+200;<br />
- }<br />
- }<br />
- addEventListener(Event.ENTER_FRAME,モーション);<br />
- addEventListener(Event.ENTER_FRAME,レンダリング);
視点のズーム&回転
- var 視点={x:0,y:0,angle:0,zoom:0};</p>
- <p>var ボックスたち=[];<br />
- var ポイントたち=[];</p>
- <p>ボックス追加();</p>
- <p>function ボックス追加() {<br />
- var ポイント;<br />
- var ボックス;</p>
- <p> for (var i=0; i<20; i++) {<br />
- ポイント={x:Math.random()*700,y:Math.random()*400};<br />
- ポイントたち[i]=ポイント;</p>
- <p> ボックス=new box_mc();<br />
- ボックスたち[i]=ボックス;<br />
- addChild(ボックス);<br />
- }<br />
- }</p>
- <p>function モーション(e:Event) {<br />
- //ポイント.x+=2;<br />
- 視点.angle-=0.01;<br />
- 視点.zoom+=0.01;<br />
- }</p>
- <p>function レンダリング(e:Event) {<br />
- var cos=Math.cos(-視点.angle);<br />
- var sin=Math.sin(-視点.angle);</p>
- <p> for (var i=0; i<ボックスたち.length; i++) {<br />
- var ポイント=ポイントたち[i];<br />
- var ボックス=ボックスたち[i];</p>
- <p> var 視点からの差x=(ポイント.x-視点.x)*視点.zoom;</p>
- <p> var 視点からの差y=(ポイント.y-視点.y)*視点.zoom;</p>
- <p> ボックス.scaleX=ボックス.scaleY=視点.zoom;<br />
- ボックス.x=視点からの差x*cos-視点からの差y*sin+350;<br />
- ボックス.y=視点からの差x*sin+視点からの差y*cos+200;<br />
- }<br />
- }<br />
- addEventListener(Event.ENTER_FRAME,モーション);<br />
- addEventListener(Event.ENTER_FRAME,レンダリング);
感想
忘れないうちにってことでとりあえずアップしてみたけど、
かなりセッションでやってたやつに近いサンプルができたかな?
自分もこのソースみてまた勉強しようw
今回の城戸さんのスライド公開ならへんかなぁ(*´ω`*)
関連する投稿
- Comments: 0
- Trackbacks: 0
[tweensy]いろいろ試してみる:TweensyGroupで特殊プロパティをトゥイーン
訳しときながらTweensyGroupって何なのかわからなかったけど、
今日asDoc読んでてわかったような気が…。
TweensyGroupには、tweenerでいう特殊プロパティ的なもののトゥイーンのショートカットがあって、
Tweensyでやるよりコードがすっきりして、簡単。
色、輝度、マトリックス、…などなどをバラバラに指定できて、まとめて管理できるから”Group”ってことなのかな??
それぞれの効果にTweensyTimelineを作ってグループ管理している模様。
時間、イージング、遅延とか各効果別に設定したいけど、制御系はグループ管理したいって時に使えるってことか。
とにかく今回は制御というよりかは特殊プロパティについて調べてみる。
TweensyGroupサンプル
透明度をあげつつ、ぼかしをとりつつ、ぼよんと拡大する。
Sample1.as
- package
- {
- import com.flashdynamix.motion.*;
- import fl.motion.easing.*;
- import flash.text.TextField;
- import flash.display.MovieClip;
- import flash.filters.BlurFilter;
- import flash.geom.Matrix;
- /**
- * ...
- * @author DefaultUser (Tools -> Custom Arguments...)
- */
- public class Sample1 extends MovieClip
- {
- private var tween:TweensyGroup;
- private var tf:TextField;
- public function Sample1() {
- tween = new TweensyGroup();
- tween.onComplete = tweenComp;
- //透明度
- this.alpha = 0;
- tween.alphaTo(this, 1, 1,Quartic.easeOut,0.5);
- //フィルター
- var blur:BlurFilter = new BlurFilter(30,30,1);
- tween.filterTo(this, blur, {blurX:0,blurY:0}, 1,Quartic.easeOut,0.5)
- //拡大・縮小
- tween.scaleTo(this, 2, 2, Elastic.easeOut, 1);
- //テキストフィールドを作成、追加
- tf = new TextField();
- tf.y = -(this.height/2)-20; //基準点が中央のため
- addChild(tf);
- }
- public function tweenComp():void {
- tf.text = "Complete!";
- }
- }
- }
ショートカットの詳細
alphaToメソッド -透明度の変更
public function alphaTo(instance:Object, alpha:Number, duration:Number = 0.5, ease:Function = null, delayStart:Number = 0): TweensyTimeline
//mcのアルファを3秒かけて0.5にする
tween.alphaTo(mc, 0, 5,3);
brightnessToメソッド -輝度の変更
public function brightnessTo(instance:Object, amount:Number, duration:Number = 0.5, ease:Function = null, delayStart:Number = 0): TweensyTimeline
//mcの輝度を3秒かけて0.5にする
tween.alphaTo(mc, 1, 5,3);
ColorToメソッド -色を変更
public function colorTo(instance:Object, color:uint, duration:Number = 0.5, ease:Function = null, delayStart:Number = 0): TweensyTimeline
//mcの色を3秒かけて0x000000(黒)にする
tween.colorTo(mc, 0x000000, 3);
ColorTransformToメソッド -ColorTranceformの適用
public function colorTransformTo(instance:Object, color:ColorTransform, duration:Number = 0.5, ease:Function = null, delayStart:Number = 0): TweensyTimeline
import flash.geom.ColorTransform;
//mcの色をColorTransform オブジェクトctに5秒かけて適用
var ct:ColorTransform=new ColorTransform(-1, -1, -1, 1, 255, 255, 255, 0)
tween.colorTransformTo(mc, ct, 5)
contrastToメソッド -コントラストの変更
public function contrastTo(instance:Object, amount:Number, duration:Number = 0.5, ease:Function = null, delayStart:Number = 0): TweensyTimeline
//mcのコントラストを3秒かけて1(最大)に変更
tween.contrastTo(mc 1,2);
filterToメソッド -フィルタ効果の適用
public function filterTo(instance:Object, filter:BitmapFilter, to:Object, duration:Number = 0.5, ease:Function = null, delayStart:Number = 0): TweensyTimeline
import flash.filters.BlurFilter;
//ぼかしフィルターのblurX、blurYを10に5秒かけて適用
var blur:BlurFilter = new BlurFilter(0,0,1);
tween.filterTo(this, blur, {blurX:10,blurY:10}, 5);
matrixToメソッド -マトリックス変形の適用
public function matrixTo(instance:Object, mtx:Matrix, duration:Number = 0.5, ease:Function = null, delayStart:Number = 0): TweensyTimeline
import flash.geom.Matrix;
//mcにMatrixオブジェクトmtxを3秒かけて適用
var mtx:Matrix = new Matrix(-1,2,1,2,1,2);
tween.matrixTo(this, mtx, 3);
rotateToメソッド -回転
public function rotateTo(instance:Object, rotation:Number, duration:Number = 0.5, ease:Function = null, delayStart:Number = 0): TweensyTimeline
//mcの角度を3秒かけて180度に変更
tween.rotateTo(mc, 180, 3);
scaleToメソッド -拡大・縮小
public function scaleTo(instance:Object, scale:Number, duration:Number = 0.5, ease:Function = null, delayStart:Number = 0): TweensyTimeline
//mcを1秒かけて50%に縮小
tween.scaleTo(mc,0.5,1);
soundTransformTo -SoundTransformの適用
public function soundTransformTo(instance:Object, trans:SoundTransform, duration:Number = 0.5, ease:Function = null, delayStart:Number = 0): TweensyTimeline
import flash.media.SoundTransform;
////mcにSoundTranceformオブジェクトstを3秒かけて適用
var st:SoundTransform = new SoundTransform(1, 0);
tween.soundTransformTo(this, st, 3);
関連する投稿
- Comments: 0
- Trackbacks: 1
Home > Tags > flash