Slidesライブラリにボタンを追加

本来プレゼン用に使うのに非常に便利なSlidesライブラリですが、今回普通のwebページにも使ってみようということで、キーボード操作と同様の動きをボタンを使ってやろうとしてつまづいたメモ。 基本的には、uranodai.slides.sceneにあるMainScene.asとListScene.asに、ボタンを追加してキーボード操作と同じアクションをセットすればええんやけど、実行してみると、途中でSceneIdのエラーになってしまう。 解決法として、ボタンやサムネイルモードになるときの背景(デフォルトでグレイの)をaddChildでなく、addChildAtを使ってaddしてあげれば直った。どうやら、色々動的に足したせいかもしれんけど、なんかかぶってしまうみたい。それで、それぞれのインデックス位置を指定してあげることで解決。 まぁ、僕のへなちょこコードにしか起こらない現象かもしれないけど、一応メモ。

カスタムコマンド事始め

さっき勉強会のメモを書いたけど、見返すだけやと全然わからん。 ということで、とりあえずカスタムコマンドを触ってみました。 結論から行けば、そんなに難しくはなさそう。 まぁ最初やからというんで、たいしたことないからかもしれんけど。 単純に、テキストフィールドを追加して、メッセージを出すというコマンドを作ってみた。追加したテキストフィールドは、stageのクリックで消えるようにIndexSceneでセット。もっかいクリックしたら現れるようにも。 test 作り方は、 ・テンプレートフォルダのMyCommand.asをコピーしてきて、通常のクラスと同様にパラメータをコンストラクタにセット。 ・execute()のところに、テキストフィールドを作成して、メッセージを表示。 ・clone()のことに、プロパティの値を元のプロパティと一致するように設定。 ・最後に、コマンドを作成したシーンからテキストフィールドにアクセスできるように、get関数を作成する。return _textFieldみたいに。 僕の作ったカスタムコマンドをとりあえずFlowCommandとするとして、 呼び出しは、 var com:FlowCommand= new FlowCommand(progression.container, “michinoko”, 20, 5); com.execute(); progression.containerに、”michinoko”という文字列を、(x,y)=(20,5)の位置に表示。 あとはIndexScene内で、setTextFormatしてあげたり、EventListenerしてあげたり。 何に使うん? と言われると困るねんけど、練習なんでそんなん気にしないで下さいマセ。 //

「Progression勉強会inMTL」行きました

extendsProgression拡張機能コンテストのための勉強会、Progression 勉強会 in MTLに行ってきました。 内容は、対象がクラススタイルで制作経験のある方以上ということで結構上級向け?ひさびさにtakaさんのお話を聞いたメモ。 ■sec1:カスタムコマンドの作り方 ・基本のコマンドを宣言して使用する。 var com:Command = new Command(function():void { trace(“カスタムコマンド”); } ); ・execute()は、 (1)Commandクラスのサブクラス (2)第一引数に、実行関数 (3)第二引数に、中断関数 (4)clone()、パラメータのセットも忘れずに。 ・コマンドは、executeComplete()を実行しないとコマンド完了扱いにならない。また、処理後時間差で完了させたい場合は、timerを使う。 ・コマンドのエラー発生には、中断処理(interrupt())が必要。interruptComplete()で中断処理を完了。 ・DoTweenerの場合、中断処理されるとそのトゥイーン中に中断されるので、アニメーションの途中で止まることになる。 ■sec2:カスタムシーンの作り方 ・通常に使ってシーンを作成するのもカスタムシーン。ここでは、拡張機能としてのカスタムシーンの作り方。 ・PRML形式のXMLファイルを用いてローダー例。 ・ムラケンさんの作成したカスタムシーンのサンプル例。 ■sec3:カスタムコンポーネントの作り方 ・そもそもコンポーネントを作るのは難しい ・ライブラリから、コンポーネント定義でクラスを設定し、コンポーネント定義のパラメータも。 ・カスタムコンポーネントを作る人は、coreコンポーネントクラスを用いたほうが良い。 ・コンポーネントをswc書き出しするだけでは使えない。  →書き出したswcは直接FLASHでは読み取れない。  →C:\ユーザー\AppData\Local\Adobe\Flash CS4\ja\Configuration\Componentsに入れなきゃダメ。(vistaの場合) ・コンポーネント本体の中には、表示領域として透明なboxなどが必要。サンプル参照。 ・コンポーネントインスタンスは親のexecute()に追加される。 ■sec4:質疑応答 Q1.シーンをまたいだときの深度管理は? A1.AddChildAt()コマンドは、深度を設定出来る。いきなり1000とかでもok。 Q2.他のシーンのオブジェクト制御は? A2.getSceneBySceneId()で他シーンへのアクセス可能。 Q3.子swfへのディープリンク設定は可能? A3.現時点では不可。次回のメジャーアップグレードでは対応するかも。  子のxmlを親へ渡し、それを親で管理することにより出来るみたい。 Q4.コンテストについて。 A4.今回の意図としては、使いやすいや、面白いなどと可能性を重視している。 んー、メモの走り書きを見ているだけでは全然わからん、あってるかどうかも(笑) サンプルも再度アップされたみたいやし、ちょっとづつ見ていくしかないやね。 takaさんありがとうございました!

「最初の3歩目」行きました

「元気になるprogression講座 最初の3歩目」に行ってきました。 今回は、progressionからXML読み込みをするというもの。 XML読み込み自体は、何回も使っているし、そんなに難しいものではない。 ただ、PRML形式XMLファイルは使ったことがなかったので、勉強になった。これは使えそう。 しかもPRML形式のXMLファイルはprogressionから簡単にシーンエディタをPRML形式XMLファイルエディタとして使って作れるみたい。 ちなみに、通常のXMLファイルを読んだあとは、 ■要素:myXML.content[1].text() ■属性:myXML.content[1].@help でノードを取得する。 それがPRML形式XMLファイルの場合は、読み込んだデータがXMLListなので、XMLUtilを利用して変換(CASAフレームワークと同じ感じ)して、そのオブジェクトの変数みたいな扱いが可能。 var obj:Object = XMLUtil.xmlToObject(xmlData); で、<imageUrl></imageUrl>内の要素は、obj.imageUrlとして取得できる。便利ー!

getSceneBySceneIdでハマる

この前の最初の2歩目で教えてもらったgetSceneBySceneIdを使ってIndexSceneにアクセスしようとする。 例えば、IndexSceneにあるhogeという変数にgetSceneBySceneId(new SceneId(“/ index”))).hogeでアクセスしようとしたけど、アクセスできない。 TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 と出る。これにはまった; ようは、IndexScene(root).hogeで良いということ。もうシーンがあるから、newはいらないってことなんやろか?忘れないうちにメモ。

ProgressionのIndex()

Progressionのクラスベースでサイトを作りだす。 ローディングに続いて、OPムービーを作成にかかる。 OPムービーで使うMCなどを配置するために、flaファイルのライブラリにあるアイテムをIndex.asに宣言すると、 TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。at myproject::Index() と出た。 どうやら、Index.asのコンストラクタに何か書いちゃダメ? Index.asの_onInit()に書いたらokやった。 感覚的には、Index.asのコンストラクタと_onInit()は同じのように感じる。が、おそらく僕の考えの及ばないところで違うと予測。 結局は右往左往してIndexSceneのコンストラクタに書いたんやけど。

「最初の2歩目」行きました

「元気になるprogression講座 最初の2歩目」に行ってきました。 2歩目というだけあって、おそらく参加しているヒトは僕と同じようなレベルと思われる。 一応、progression全体の簡単な説明から、シーン、キャスト、イベントなどの説明、さらに実際にノートPCで各自サンプルを作成していく。 僕自身は、タイムラインベースでしか実際に制作をしたことがなかったので、コマンドベースへ移行するにあたって詰まったときの逃げ道?(講座では「裏街道」と呼んでたけど;)も知れてよかった。 あっという間の1時間半でした。 ■new AddChild(this, _mc, {child:{ x:73, y:60 }})とまとめて書ける。 ■ステージ上のrootは、CastDocument.rootであらわす。 ■SceneObjectに作成したインスタンス、変数等の参照にはgetSceneBySceneIdを使う。 などが僕は今回一番のポイント。 特に1番目は今までPropで書いてからAddChildしていたので、コードが短くなるのが嬉しっ! >サカモト先生 ありがとうございました! 是非3歩目も参加したいと思いますのでヨロシクお願いします(__)

「元気になるprogression講座 最初の2歩目」行きます

「元気になるprogression講座 最初の2歩目」に申し込みました。 ついブログのURLを打ち出してから、やっぱりコピペのほうが早いやん!と思いコピペしたら失敗。二回もコメントしてしまい、ごめんなさい。最初のコメント消してもらえると嬉しいです。 気になる内容は、”主にクラスベースで「最初にここで困るんじゃないの」という内容を基本”とのこと。クラスベースは少ししか触れてないんやけど、セミナーまでには今の仕事でがっつり触れるとええなぁ。 そういや、月末の「F-site的MAX」にも参加します。 応募したときはまだ未発表やったけど、demo2はtrick7のteraさんになったみたいや。 勉強させて頂きます(__)。

Progression3、主なCommandクラスメモ

blog.progression.jpにも紹介されてましたが、gihyo.jpに連載されていたProgression特集のメモ。 ■Traceコマンド:デバッグ時に出力されるtrace文を出力するコマンドクラス addCommand( new Trace(“出力させたい文字列”) ) ■Waitコマンド:一定時間処理を待機させるコマンドクラス addCommand( new Wait(1000), new Trace(“1秒待ちました”), new Wait(1000), new Trace(“もう一回1秒待ちました”), ) ■AddChild,AddChildAtコマンド:表示リストにオブジェクトを追加するためのコマンド addCommand( new AddChild(コンテナ,オブジェクト) ) addCommand( new AddChildAt(コンテナ,オブジェクト,表示インデックス) ); ■RemoveChild,RemoveAllChildrenコマンド:表示リストから対象オブジェクトを削除、RemoveAllChildrenは対象オブジェクトの子オブジェクトをすべて削除するコマンド addCommand( new RemoveChild(コンテナ,オブジェクト) ) addCommand( new RemoveAllChildren(コンテナ) ) ■DoTween,DoTweenerコマンド:イージング動作を提供してくれるコマンドクラス、DoTweenerはイニシャライズが必要。 addCommand( new DoTween( _object, { x:100, y :100}, Regular.easeOut, 1000 ); ) addCommand( new DoTweener(_object,{ x:100, y :100,transition: “ [...]

ProgressionのテンプレートをFlashDevelopに組み込む

せっかく復習を兼ねて勉強していくかということで、FlashDevelopを最新版(2009/01/08時点)のFlashDevelop 3.0.0 RC1にアップグレードする。 が、今までのセッティングを残しているつもりが、残っていない! とりあえず、minomix.netのminoruさんが公開してるテンプレートファイルやら、seyself.comのmichiさんが公開してるプロジェクトテンプレートなどを入れる。 が、入らない。 落ち着いて、FlashDevelopからTools > Application Filesを見てみると、、、コピーしたフォルダが入ってない。 つまり、僕がコピーしていたのは、C:\Users\michinoko\AppData\Local\FlashDevelop\Templates\ProjectFiles\AS3Projectではなく、C:\Program Files\FlashDevelop\Templates\ProjectFiles\AS3Projectに入れてしまっていた; ということで、無事設定復活!何事も思い込みには気をつけよう。ちなみに僕はvistaです。 にしても、swcファイルとかってプロジェクトごとでなくデフォルトで設定ってできないのだろうか? まぁ、無駄なものは入れないにこしたことはないのだろうけど。 設定の仕方はteraさんの記事がとてもわかりやすい。 >>2009.01.19追記 minomix.netのminoruさんのテンプレートがアップデートされてた。