FC2ブログ

工房瓦版

創作関係の趣味ブログ

ボタンレイヤーを動かす

 KAGでレイヤーを動かしたい場合、moveタグを使えば簡単です。
 しかし、このタグはメッセージレイヤーと前景レイヤーしか動かせません。
 よって、当然の帰結として、ボタンレイヤー等が動かせないので、肝心な時にかゆい所に手が届かない不便さがあります。

 私の場合、↓画像の、キャラの立ち絵は前景レイヤーなんですが、左下にある(メッセージウィンドウにくっついている)顔グラはボタンレイヤーなのです(buttonタグで貼り付けている)。
screenshot_0_20130828215846f13.jpg
 なんで前景レイヤー使わないかというと、右クリックでメッセージレイヤー消したりした時に、ボタンで貼り付けていた場合、メッセージと一緒に消えてくれたりして、色々と都合がいいからです。

 で、この顔グラ(ボタンレイヤー)なんですが、一部の演出で、動かせれば便利だなぁと思ったので、方法を考えてみました。

 こんな感じです。

顔グラを動かすテスト。
@iscript
tf.test_move =%[];
tf.test_move['time']=500;
tf.test_move['path']="(100,-50,255) (200,200,0)";
tf.test_move['accel']=-5;

kag.current.links[0].object.beginMove(tf.test_move);//顔ボタンが動く
@endscript


 ↓実行すると
sc01.jpg

 仕組みとしては、beginMove()っていう、前景レイヤーとかをmoveタグが動かす時に使う機能を拝借します。
 こいつに、動かし方を覚えさせた辞書配列を渡すと、対象となるレイヤーをその通りに動かしてくれます。

 まず、対象となるレイヤーについてですが、ボタンレイヤーは、メッセージレイヤー中にリンクとして配置され、kag.current.links[0].objectとなります。
 よって、kag.current.links[0].object.beginMove();と書けば、ボタンレイヤーが動きます。

 次に、渡す配列ですが、これはmoveタグの設定項目と同じ内容のものを作ります。

tf.test_move =%[];
tf.test_move['time']=500;
tf.test_move['path']="(100,-50,255) (200,200,0)";
tf.test_move['accel']=-5;


 がそれです。

 timeが移動時間、pathが移動経路、accelは加速度です。
 pathの指定方法ですが、beginMove()の実行時に、「var array = [].split("(), ", elm.path, , true);」という感じに分解されるので、(とか)とか,とか (スペース)とかで区切りながら、x,y,opacityの各値を順に書けばよいです。

【備考】
 pathの指定において、ボタンレイヤーのleftやtop位置を使って指定したい場合。

var x1 = kag.current.links[0].object.left;
var y1 = kag.current.links[0].object.top-80;

var x2 = kag.current.links[0].object.left;
var y2 = kag.current.links[0].object.top+200;

tf.test_move =%[];
tf.test_move['path']= "(" + x1 + "," + y1 + ",255) (" + x2 + "," + y2 + ",0)";


 こんな風に書けばよいです。
 ポイントは、tf.test_move['path']には文字列を放り込まないといけないので、↑のような長ったらしい式になっていること。
前のページ 次のページ