Home > Archives > 2008-08

2008-08

Progression2と3の違いをまとめてみる


Progression2から3(現在のところBeta2版)にバージョンアップしたことで、変更された点をまとめてみる。

メモ書きなので、順番メチャクチャ、気がついた段階で加筆修正いきますので、その点ご了承ください。

変更された点

  1. srcフォルダ内のファイル構成
  2. Indexクラスの継承元(もと)の変更
  3. Preloaderクラスの継承元(もと)の変更
  4. Preloaderクラスのメソッドの変更
  5. 子シーンの作成
  6. 子シーンの削除
  7. Tweenerのspecial properties

1.srcフォルダ内のファイル構成

Progression2のsrcフォルダのファイル構成は、以下の通り。

  1. index.fla
  2. preloader.fla
  3. classesフォルダ
  4. importフォルダ

これがProgression3では以下のように変更になっている。

  1. index.fla
  2. preloader.fla
  3. classesフォルダ
  4. libsフォルダ

importフォルダがlibsフォルダへと変更されています。変更されたのは、ファイル名だけではなく、Progression2ではclassesフォルダの中に、「caurina」「com」「jp」フォルダなどが入っていましたが、Progression3からはこれらのフォルダはlibsフォルダへと移行されました。

では、Progression3でclassesフォルダは何に使うの? という疑問が出てきますが、このclassesフォルダは、自分で作成していくクラスファイルを保存していくということに使います。

フォルダを分けることにより、caurinaのTweenerのバージョンアップの際には、libsファイルを書き換えるだけで済むことになります。

2.Indexクラスの継承元(もと)の変更

ドキュメントクラスであるIndex.asファイルの継承元(もと)が変更になっています。

Progression2では、継承先はDocumentRootクラスでしたが、Progression3では、CastDocumentRootクラスになっています。

3.Preloaderクラスの継承元(もと)の変更

Progression2では、継承先はExPreloaderクラスでしたが、Progression3では、CastPreloaderクラスになっています。

4.Preloaderクラスのメソッドの変更

Progression2でのメソッドは、以下の通り。

  1. _onInit(初期化)
  2. _onOpen(ロード開始時)
  3. _onProgress(ロード実行中)
  4. _onComplete(ロード完了時)
  5. _onIOError(ロード失敗時)

これがProgression3では以下のように変更になっています。

  1. _onInit(初期化)
  2. _onCastLoadStart(ロード開始時)
  3. _onProgress(ロード実行中)
  4. _onCastLoadComplete(ロード完了時)

5.子シーンの作成

子シーンを作成する場合、Progression2ではaddChildを使っていたが、Progression3からはaddSceneを使うようになりました。

6.子シーンの削除

子シーンを削除する場合、Progression2ではremoveChildを使っていたが、Progression3からはremoveSceneを使うようになりました。

7.Tweenerのspecial properties

サンプルを見た限りですが、Progression2ではTweenerのspecial propertiesを使うとき、importしなくてもそのまま使えそう…

Progression3で同様にimportせずに使おうとすると、怒られます。

Progression3でTweenerのspecial propertiesを使う時は、

import caurina.transitions.properties.DisplayShortcuts;
DisplayShortcuts.init();

みたいに、忘れずに読み込んであげましょう!

とりあえず、ここまで

Progression3Beta2版を使ってみる(9)


複数のオブジェクトのアルファを0→1→0へと変化させたい時、タイムライン上だと簡単に出来る。これをProgressionで実現させるには…

★一つのオブジェクトの場合

protected override function _onCastAdded():void{
  addCommand(
    new DoTweener(this,{
                alpha: 1,
                time: 1
    })
  );
}

protected override function _onCastRemoved():void{
  addCommand(
    new DoTweener(this,{
                alpha: 1,
                time: 1
    })
  );
}

こんな感じで書くことが出来る。

★複数のオブジェクトの場合

protected override function _onCastAdded():void{
  addCommand(
    new ParallelList(0,
      new DoTweener(t1,{
                 alpha: 1,
                 time: 0.5
      }),
      new DoTweener(t2,{
                 alpha: 1,
                 delay: 0.25,
                 time: 0.5
      })
    )
  );
}

protected override function _onCastRemoved():void{
  addCommand(
    new ParallelList(0,
      new DoTweener(t1,{
                 alpha: 0,
                 time: 0.5
      }),
      new DoTweener(t2,{
                 alpha: 0,
                 time: 0.5
      })
    )
  );
}

こんな感じで実現出来るが、これだとちょっと問題が…

t1の1→0のTweenはt2の0→1のTweenが終わった後で、実行される。なので、Tweenがブチっと切れた感じになってしまう。

そこで、どうするか? を考えてみた。

import caurina.transitions.Tweener;
import caurina.transitions.properties.DisplayShortcuts;

DisplayShortcuts.init();

protected override function _onCastAdded():void{
  addCommand(
    new ParallelList(0,
      new DoTweener(t1, {
                 _autoAlpha: 1,
                 time: 0.5,
                 onComplete:function(){
                   Tweener.addTween(t1, { _autoAlpha:0,time:0.5 } );
                 }
      }),
      new DoTweener(t2, {
                 _autoAlpha: 1,
                 delay: 0.25,
                 time: 0.5,
                 onComplete:function(){
                   Tweener.addTween(t2, { _autoAlpha:0,time:0.5 } );
                 }
      })
    )
  );
}

protected override function _onCastRemoved():void{
  addCommand(
  );
}

これで、それっぽくなった。

_autoAlphaプロパティを使うことで、_onCastRemovedには何も設定しなくても、大丈夫(?)になるのかな?(←かなり怪しいけど…)

他にもっといい方法があるのかもしれないけど、とりあえずはこれで対処しておく。

Progression3Beta2版を使ってみる(8)


Progressionで複数のコマンド処理を同時に行いたい場合は、ParallelListクラスを使うと便利!

例えば、(ページ全体の)アルファを0→1に、(オブジェクト:rectの)scaleXを1→2にを同時に行いたい場合は以下の様にコードを記述

        (略)
//コンストラクタ
public function PhotoPage() {
   // 透明にする
	alpha = 0;
				
	// rectの大きさを指定
	rect.scaleX = 1;
}
		
/*======================================================================*//**
* オーバーライド・イベントハンドラメソッドです。
*//*=======================================================================*/
protected override function _onCastAdded():void {
// コマンドを登録します。
	addCommand(
		// ParallelListを使って同時に処理する
		new ParallelList( 0,
			// アルファを0→1へ
			new DoTweener( this, {
				alpha	:1,
				time	:1
			} ),
			// rectのscaleXを変更
			new DoTweener( rect, {
				scaleX		:2,
				time		:1
			} )
		)
	);
}

こんな感じで使ってあげる

あと、処理を(同時にではなく)一つずつ順番に行いたい場合は、SerialListクラスというものが用意されているので、そちらを使いましょう!

「あったらいいな」的な機能


Progressionを使っていて、シンボルとかはFlashIDE上で作成、コードはFlashDevelopを使って記述している場合

パブリッシュ時にエラーがあって、出力パネルにエラーが表示される。その際「ソースに移動」ボタンを押すと、FlashIDEのパネル上で問題のある箇所のファイルが開く。

そうではなくて、「ソースに移動」ボタンを押すと、問題のある箇所がFlashDevelop側で開かれたらいいのに…と感じた。

この機能は既に実装されていて、単に僕が(使い方を)知らないだけかも…

★追記

Progression.libspark.orgのリクエストページ(Progressionデバッガー)に、上記の内容をアップしてみました!

Progression3Beta2版を使ってみる(7)


今度は別の方法を試してみる。

<?xml version="1.0" encoding="UTF-8"?>
<article>
	<items>
		<date>2008/08/21</date>
		<contents>最新情報を更新しました</contents>
	</items>
	<items>
		<date>2008/08/22</date>
		<contents>採用情報を公開しました</contents>
	</items>
</article>

マニュアルを見ていたら、XMLUtilクラスなるものがあったので、これを使ってみる。

protected override function _onCastAdded():void {
	addCommand(
			   new LoadURL( new URLRequest( "contents/xml/item.xml" )),
			   function():void {
				   var xml:XMLList = new XMLList(this.previous.data);   
				   var obj:Object = XMLUtil.xmlToObject( xml );
				   trace( obj.article );
				}
	);
}

出力パネルにxmlの内容がきちんと表示されたので、「おっ、これかな?」と思い、obj.articleをobj.article.itemsに変更してみると…

はい、怒られた。

これまた違うみたい…

Home > Archives > 2008-08

Search
Feeds
Meta

flashDevelopスポンサー

Return to page top