| Name |
coco |
| Date |
2002年11月12日 (火) 11時02分 |
| Message |
ご指導の程宜しくお願いします!
初めまして、環境はMac FLASH MXです。
「ボタンクリップで横スクロールする画像」(スライドショー)のような事をしようとしています。
私の場合、画像一枚、170×225pxで10枚を横に並べ。
それを二周分つなげて、170×10×2、W3400×H225のmcをつくり
そのmcを、ボタンクリップ(←→)を使って、releaseで170pxずつスクロール。
pressの状態で、ずっと早送りみたいにスクロール(ループ)し続けるように。
と、単純そうな事なのですが、、、
MXですがFLASH5で書き出したいです、
[横長MCのオブジェクトアクション]
onClipEvent (enterFrame) {
if ((_x + 1700) % 170 == 0) {
bdir = dir;
}
_x += bdir * 20;
if (-320 > _x) {
_x += 1700;
} else if (860 < _x) {
_x -= 1700;
}
}
[ボタンのアクション]
on(press) {
yokonagaMC.dir = 1 // もう一方は-1
}
on(release, releaseOutside) {
yokonagaMC.dir = 0;
}
のように記述していますが、まったく今は動きません。。。
また、できれば最初は早く止まる時だんだんゆっくりに加速・減速もつけたいです。。。
どうしたらいいのでしょうか。突然で大変恐縮ですが、本当に本当に本当に宜しくお願いします。
flaは今こんな感じです。↓(念のため.zipと.sitで圧縮しました)
http://i9x11.tripod.co.jp/sounds/lineup03.fla.sit
http://i9x11.tripod.co.jp/sounds/lineup03.fla.zip |
Response
01
|
| 2002年11月12日
(火) 23時38分> 憲ちゃん
|
|
cocoさん、はじめまして♪
このスクリプト自体に矛盾はありませんが・・・(^^;
これまでのご相談でもよく失敗されるのは「条件文」です。
記述に問題なくても、条件を満たさない構成になっていることがあるのですね(笑)
if ((_x + 1700) % 170 == 0) { ←170で割り切れたとき・・・
bdir = dir;
}
flaファイルを拝見しますと、
ステージに置かれた「yokonagaMC」のインスタンスの座標は「X=-0.8,Y=-0.5」になっています!
つまり「_x」の初期値は「-0.8」小数点ということですから、「条件(余り==0)」を満たさず、
括弧の中の「bdir = dir;」に行くことができません。
ボタンから「dir=1」を送っても、括弧内に入れない以上、「bdir=0」のままなので、
「yokonagaMC」を移動させるスクリプト「_x += bdir *
20;」を実行しても、定位置を動きません(^^;
したがいまして解決方法は・・・
「yokonagaMC」のインスタンスの座標を「情報パネル」で確認しながら正確に「X=0」の位置に
配置するだけです(^^g/~~
ところが厄介なことに「yokonagaMC」の横幅サイズが「3400px」と大きく、
「情報パネル」で指定できる「2880px」を超えているため、値を入れても「無効なサイズ」が
表示されて移動できません。
※過去記事の編集領域を超える大きな画像の編集?
そんな場合でも、インスタンスを選択した状態で「キーボードの矢印キー」ではなぜか移動可能です。
今回は小数点単位で移動しなくてはいけませんので、ステージの表示倍率を「800%」にすると
「0.1px」単位で微調整できるようになりますので、

「情報パネル」の数値を見ながらキーボードの矢印キーで「X=0,Y=0」になるよう配置してください!
その他、気づいたこと・・・
1.やはり条件文ですが、「(_x + 1700) % 170 == 0」
1700は170で割っても余りは0ですから、「_x % 170 == 0」 としても同じです(笑)
2.その下の条件文をみると、結局「yokonagaMC」を活用しているのは「X=-320〜860」の間のみ!
領域を超えてまで作った全長3400の内の1180しか利用していないことになりますね(^^;
実は元々そんなに長いMCは必要ないのです!
ムービーのサイズが1つの画像分しかありませんから、画像が移動するときに見えるのは、
最大で左右2枚分です。
「1」〜「10」までの画像の帯とその左端に「10」、右端に「1」の画像をくっつけて、
「10・1・2.....9・10・1」という12枚 170*12=2040pxの長さのMCで必要十分です!
※「yokonagaMC」の編集の際、各画像シンボルは「すべて選択」してから「グループ」に
統合しておくと扱い易いです。
MCの中心(0,0)は「1」の左上として、ムービーの左上(0,0)に合わせて配置したうえで、
if (_x <= -1700) {
_x += 1700;
} else if (_x > 0) {
_x -= 1700;
}
ほぼMC全長いっぱい利用していますが、意味はおわかりですよね(^^g/~~
3.「クリックで1枚づつ進むか戻る」ためには。。。移動ピッチ、
_x += bdir * 20; ここの「20」に相当する値が、
一枚の画像の幅170の公約数(整数で割れる数字)でないと、値によっては画像を飛ばして表示します。
といって、170や85などの大きい数字だとPressの間にいくつも dir=1 を送るので、
結局読み飛ばしますから、最大で34、17、10ぐらいが適当かと思います。
ということですから・・・
>できれば最初は早く止まる時だんだんゆっくりに加速・減速もつけたいです。。。
というのは、止まるまでの距離が短いので加速度効果が現れにくいです(^^;
※加速減速の考え方は、ここの「20」に相当する部分を、例えば「speed」という変数にして、
初期値はボタンなどから仮に「speed = 30」として与えたうえで、
speed = speed * 1.1; ←ループ(EnterFrame)してくるたびに1割ずつ値を大きくする
_x += bdir * speed; ←その都度、MCの移動量が大きくなり加速する
値を仮に「0.9」とすれば、1割ずつ小さくなり、その都度移動量も小さくなって減速します。
ただし、ここのスクリプトでこれをそのまま使うと・・・_x の値は小数点になりますから
またしても最初の「条件文」が無効になります(笑)
なので・・・加速度は使っていません!
以上の修正をしたのが、この(lineup03_1.fla)です(^^g/~~
よければ上の説明と合わせて研究してみてくださいね(*^-^*)
Winならファイル名を右クリックで「対象をファイルに保存」でDLできますが・・Macは?
>MXですがFLASH5で書き出したいです
としておられたので、このファイルは「FLASH5」のファイルで書き出しています。
MXでFLASH5用のファイルに書き出すには・・

「名前を付けて保存」で「ファイルの種類」のところを「Flash5」にするだけです!!
|
|
Response
02
|
| 2002年11月13日
(水) 12時18分> coco |
|
憲ちゃんさん、詳いご解説ありがとうございます!
解決致しました!こんなに丁寧に解説しただけるとは。。。
本当に有り難うございました。
これからもよろしくお願いします。
いろいろ勉強してみますね!
またなにかあった歳にはどうぞ宜しくです。
|
|