Progression Forum
9月 03, 2010, 02:42:37 午前 *
ようこそゲストさん。まずは、ログインするか、ユーザ登録してください。
アクティべーションメール送られて来ませんでしたか?

ユーザ名、パスワード、クッキー保持期間を入力してログインして下さい。
お知らせ:
 
   ホーム   ヘルプ 検索 ログイン 登録  
ページ: [1]
  印刷  
投稿者 スレッド: CastButtonからのprogressionプロパティ参照  (参照数 2556 回)
funkre
初心者
*
投稿: 6


プロフィールを見る
« 投稿日:: 6月 15, 2009, 03:43:36 午前 »

こんにちは。
CastButtonからprogressionプロパティへ参照したいのですが、sceneIdを設定するまで「null」を返すみたいなのですが、
sceneIdを設定の際に内部で何かやっているのでしょうか 疑問

現在フォトギャラリー的なものを作成しようとしていて、親シーンに写真のサムネール(写真のリスト)、子シーンに大きな写真を表示して、
子シーンではリニア式で次の写真へ、前の写真へ、といった具合の「前へ」「次へ」ボタンを設置しようと考えています。そしてこのボタンはクリックするごとに、「次へ」ボタンであればprogression.current.nextを参照してなければ(nullを返せば)非表示にしたいと考えいます。
現在のところ子シーンに「次へ」「前へ」ボタンの参照を持たせて、_onLoadInit内で各ボタンに実装したupdate(progression)を呼び出すといった感じでsceneObjectのprogressionプロパティをパラメータとして渡して関数内でsceneIdの設定をしているのですが、もっとスマートな方法はありますでしょうか?


不明点や分かりにくい点があればご指摘ください。
どうぞよろしくお願いいたします。
« 最終編集: 6月 15, 2009, 03:49:16 午前 by funkre » IP記録
northprint
管理人
常連メンバー
*****
投稿: 179



プロフィールを見る サイト
« 返信する #1 投稿日:: 6月 15, 2009, 08:20:24 午前 »

funlleさま>

確かにprogressionプロパティnullになりますね。

そんな時はプロパティに頼らずにgetProgressionByIdを使ってProgressionインスタンスを参照すると良いと思います。

//Progressionのidがindexの場合
var prog:Progression = Progression(getProgressionById("index"));

としてProgressionインスタンスを参照し、

prog.current.nextで次のシーンが取れますよ。


こんな回答で大丈夫でしょうか?
IP記録
nium
管理人
住民メンバー
*****
投稿: 277


プロフィールを見る
« 返信する #2 投稿日:: 6月 15, 2009, 08:21:34 午前 »

こんにちわ。

なぜ CastButton の progression プロパティが、sceneId が設定されるまで null になるかというと、それまで CastButton がどの Progression インスタンスと関連付くべきかという妥当な基準がないからです。
sceneId が設定されれば、その識別子の示すシーンを管理している Progression インスタンスと関連付けることは自然なことですので、このように設定しています。

それ以外の方法で Progression インスタンスを取得したい場合には getProgressionById() メソッドを使用して、直接参照を取得してしまうのが早いと思います。
また、「次へ」「前へ」の切り替えタイミングについても、Progression がシーンが切り替わった場合に ProcessEvent.PROCESS_SCENE イベントを送出するので、そちらを監視していればできると思います。

もしくは、一番簡単な方法ですと NextButton コンポーネントや PreviousButton コンポーネントを使用してしまうと、同様の機能が一発で実装できます。
クラスベースで実装したい場合には jp.progression.casts.buttons.NextButton を継承する感じですね。
IP記録
funkre
初心者
*
投稿: 6


プロフィールを見る
« 返信する #3 投稿日:: 6月 15, 2009, 10:44:43 午後 »

>northprintさま
ありがとうございます。getProgressionByIdなるものがあるのですね。これは使えますね!

>niumさま
ご回答ありがとうございます。progressionインスタンが複数作成可能ということを初めて知りました。それを使う日はまで遠そうですが…。
アドバイスをもとに「ProcessEvent.PROCESS_SCENE イベント」を使用してうまくいきました。
現在は親シーンで「次へ」「前へ」ボタンを作成してProcessEvent.PROCESS_SCENEイベント監視して、(親シーン内の)リスナー関数内で各ボタンのupdate();を呼び出しています。

まだ試していませんが、それぞれのキャストボタン(「次へ」「前へ」ボタン)内でProcessEvent.PROCESS_SCENEイベントを監視して、var prog:Progression = Progression(getProgressionById("index"));でprogressionプロパティを参照する方がよいでしょうか?

たいへん勉強になります。ありがとうございます。
他にもこうやれば?などありましたらアドバイスよろしくお願いいたします!


IP記録
ページ: [1]
  印刷  
 
ジャンプ先:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!