![]() |
前回作った onCopyLayer メソッド でちゃんとトランジションに対応できてるように見えるんだけど、まだ何か足りないの? |
![]() |
onCopyLayer メソッド を使えば、 見た目はトランジションに対応できるんだけど、これだけだとトランジションした後に、ちょっと困ったことが起きちゃうんだ。 |
![]() |
困ったことって? |
![]() |
例えば、こういう場合。 |
<トランジションした後に日付を変更する KAG スクリプト>
![]() |
これって、トランジションした後に日付を変えてるの? |
![]() |
そ。これを実行すると… |
<実行結果>
![]() |
あれっ? 日付を変えてるはずなのに、表示は06/30のままになってるよ? |
![]() |
これがトランジションした後に起きる、ちょっと困ったことだよ。 |
![]() |
う〜ん、確かにこれだと困っちゃうね… でもどうして日付表示が変わらないの? |
![]() |
日付を表示してる2つのレイヤは foreLay が表画面用のレイヤで、 backLay が裏画面用のレイヤだったよね。 |
![]() |
うん、そだね。 |
![]() |
実は、1回トランジションすると、foreLay が裏画面のレイヤで、 backLay が表画面のレイヤになっちゃうんだ。 |
![]() |
えっ、それってつまり表と裏が入れ替わっちゃうってこと? |
![]() |
ん、そういうこと。 だから、裏画面の方のレイヤの日付表示が07/01になってるの。 |
![]() |
でも、image タグとかだと、
トランジションした後に表と裏が入れ替わったりすることなんてないよ? page=fore にするといつでも表画面に画像が表示されるし。 |
![]() |
それはトランジションした後に、KAG のシステムが表画面の情報と裏画面の情報を自動的に交換してくれてるからだよ。 |
![]() |
え、そうなの? |
![]() |
うん。でもプラグインが独自に持ってるレイヤまでは管理してもらえないから、 プラグインの方で表と裏を交換するメソッドを作っとかないと、こんなふうに表と裏が逆転しちゃうってワケ。 |
![]() |
へぇ、そうなんだ… |
![]() |
で、それをやるのが onExchangeForeBack メソッド っていうイベントハンドラ。 |
![]() |
onExchangeForeBack メソッド? |
![]() |
onExchangeForeBack メソッドは layer=base children=true のトランジションが終わった時に呼び出されるんだ。 |
![]() |
layer=base children=true のトランジションが終わった時って、確か onCopyLayer メソッドも呼び出されるんだったよね? |
![]() |
ん、その後に onExchangeForeBack メソッドが呼び出されるの。 |
![]() |
ふぅん、そうなんだ。 それで、具体的にはどうやったら表画面と裏画面の情報って交換できるの? |
![]() |
今回のプラグインの場合はカンタンだよ。 |
<表画面と裏画面の情報を入れ替える onExchangeForeBack メソッド>
![]() |
これで OK。 |
![]() |
えっ、これだけでいいの? |
![]() |
うん。表画面の情報は foreLay、つまり表画面用のレイヤだけだし、 裏画面の情報は backLay、つまり裏画面用のレイヤだけだから、この2つを交換するだけ。 |
![]() |
あ、そういえば <-> って今までに見たことないんだけど、これって演算子? |
![]() |
そだよ。 <-> 演算子は左側の変数の値と右側の変数の値を入れ替える演算子なんだ。 |
![]() |
ってことは、foreLay の中身と backLay の中身を入れ替えてるってこと? |
![]() |
ん、そういうこと。 |
![]() |
えっと、何で foreLay の中身と backLay の中身を入れ替える必要があるのかよくわかんないんだけど… |
![]() |
トランジションすると、今まで表画面だったレイヤが裏画面のレイヤになって、
今まで裏画面だったレイヤが表画面のレイヤになるんだ。 こんなふうに。 |
<トランジション前後のレイヤ構造>
![]() |
あ、トランジションした後に foreLay に日付を書き込んでも、 裏画面に書き込むことになっちゃうんだ。 |
![]() |
そう。 だから、onExchangeForeBack メソッドが呼び出された時に、 foreLay と backLay を入れ替えると… |
<レイヤの参照入れ替え>
![]() |
今度はちゃんと foreLay が表画面のレイヤを指してて、 backLay が裏画面を指すようになってるでしょ。 |
![]() |
ほんとだ。これなら foreLay に日付を書き込めば表画面に表示されるね。 |
![]() |
んじゃ、前回の DatePlugin クラスに onExchangeForeBack メソッド を追加して、
さっきのスクリプトをもっかい実行してみよっか。 必要なファイルはここに置いとくね。 |
![]() |
うん。 |
<実行結果>
![]() |
あっ、今度はちゃんとトランジションの後に日付が07/01に変わったね。 |
![]() |
これでトランジションに対応できたね。 |
![]() |
えっと、結局プラグインを作る時には、onCopyLayer メソッドと onExchangeForeBack メソッドを両方作らなくちゃいけないってことなんだよね? |
![]() |
レイヤを使って画像を表示するプラグインを作る時は基本的にそうなるね。 でも、画像を表示しないプラグインを作る時は、この2つのメソッドは作らなくてもいいよ。 |
![]() |
あ、そっか。画像を使わないんならトランジションは関係ないもんね。 |
![]() |
じゃ、トランジションの話はとりあえずこれでおしまい。 次回はマクロを使ってプラグインのメソッドを呼び出せるようにするね。 それじゃ、また次回! |