![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.1ベストアンサー
- 回答日時:
このように考えてはいかがでしょう。
ボタンが押された時に、ボタンが押されたという情報を変数(このような使い方をする変数は、フラグとも呼ばれます)に記録しておき、ボタンが離された時にはその情報をクリアします。
このフラグの値を常時監視して、ボタンが押されている時だけスクロールを実行するようにします。
ボタンが押された時に発生する press イベントは、押されたその時、1回しか発生しません。従って、ボタンに設定したアクションが実行されるのも、その時1回きりです。
一方ムービークリップイベントの enterFrame イベントは、ムービークリップがステージにある間、常に発生しています。フラグの値を監視して、特定の値になった時だけ実行するような処理は、このイベントを利用して作ります。
なお、enterFrame イベントはフレームレート分の1秒ごとに発生し、スクリプトもそのタイミングで実行されます。
特に大きなフレームレートのムービーの場合、enterFrame イベントが発生する度にスクロールさせてしまうと、スクロールが速すぎて使いにくくなることがあります。
もう1つ変数を用意し、enterFrame イベントが発生するごとにカウントを取ります。このカウントが一定の値になった時にだけスクロールする、というように考えると、スクロールの速さを調整することができます。
Flash 5 のムービークリップでは、press や release イベントが検出できません。
しかし、enterFrame イベントはムービークリップでしか使えません。ムービークリップでも press や release イベントを検出できるようにするには、透明なボタンを重ねたムービークリップを用意します。
ムービークリップを1つ、新規に作ります。絵を描いたら、これをとりあえずボタンシンボルに変換します。
レイヤーを分け、このシンボルを「同じ位置にペースト」を利用して、同じ位置にコピーして重ね合わせます。「情報パネル」で数値を入力して合わせてもいいでしょう。
上になっているボタンは、「効果」パネルのリストで「アルファ」を選び、0%にして透明にします。
下の方になっているボタンは単なる絵として使いますから、「修正」→「分解」で、普通の描画オブジェクトにしておきます。
スクロールボタンが押されているかどうかの状態をフラグに保存するスクリプトを、透明なボタンに設定します。
フラグとして使う変数を、仮に press_flg という名前にしますと、
(↓以下のスクリプトをコピーして使う場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)
on(press)
{
//押されたという情報を記録
press_flg = true;
}
on(release)
{
//フラグをクリア
press_flg = false;
//スクロールウェイトをリセット
scroll_wait = 0;
}
scroll_wait という変数は、スクロールの速さを調整するための待ち時間の計測(ウェイト)に使います。ボタンが離された時は、このウェイトも0にリセットします。
これで、スクロールボタンのシンボルは完成です。
ステージにスクロールボタンとテキストエリアを配置します。
Flash 5 では、テキストエリアのスクロールを制御するには、テキストエリアで表示する変数名.scroll といった表記をします。
テキストエリアで表示する変数を、仮に message という名前だとし、メインのタイムラインにあるものとしますと、ステージにあるスクロールボタン(のムービークリップ)からこの変数を見ると、テキストエリアの行数を制御するには _root.message.scroll あるいは _parent.message.scroll となります。
この値を、スクロールボタンで発生する enterFrame イベントを利用して操作します。
上方にスクロールさせるボタンに up 、下方にスクロールさせるボタンに down というインスタンス名を付けるとすると、それぞれに設定するスクリプトは、大体、次のようになります。
・ up / down の両方に共通するスクリプト
onClipEvent(load)
{
//フラグの初期化
press_flg = false;
//スクロールウェイトの初期化
scroll_wait = 0;
}
・ up にだけ設定するスクリプト
onClipEvent(enterFrame)
{
//ボタンが押されている場合
if( press_flg )
{
//3フレームに1度、スクロールさせる
scroll_wait++;
if( scroll_wait >= 3 )
{
//上にスクロール
_root.message.scroll--;
//最上行の場合はスクロールを止める
if( _root.message.scroll <= 0 )
{
_root.message.scroll = 1;
}
//ウェイトのクリア
scroll_wait = 0;
}
}
}
・ down にだけ設定するスクリプト
onClipEvent(enterFrame)
{
//ボタンが押されている場合
if( press_flg )
{
//3フレームに1度、スクロールさせる
scroll_wait++;
if( scroll_wait >= 3 )
{
//下にスクロール
_root.message.scroll++;
//最下行の場合はスクロールを止める
if( _root.message.scroll > _root.message.maxscroll )
{
_root.message.scroll = _root.message.maxscroll;
}
//ウェイトのクリア
scroll_wait = 0;
}
}
}
load イベントは、ムービークリップがステージに登場した、その時1回だけ発生するイベントです。この特徴を利用して、ボタンが押されたかどうかのフラグとスクロールの速さを制御するカウンタを初期化します。
スクロールの速さを変えたいときは、
if( scroll_wait >= 3 )
の3の部分を変更してください。数字が大きいほど遅くなります。
テキストエリアやスクロールボタンが何かのムービークリップの中にあるなど、階層の構造に違いがある場合は、ターゲットパスにご注意ください。
長くなってすみませんでした。
不明な点がありましたら、補足してください。
この回答へのお礼
お礼日時:2004/10/03 02:45
詳しい説明ありがとうございました。
無事思ったとおりのスクロールボタンが完成しました。
ほんとに感謝してます!!
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
flash lite1.1 ボタンについて
-
onClipEvent(load)かhitareaの...
-
VBScriptでMsgBoxのYesNoボック...
-
SNMPの標準MIBについて
-
【VB.NET】別Formのボタンが押...
-
VB.NET2005 DataGridViewでレコ...
-
オブジェクトの重なり順の変更
-
VBAで改行の入ったデータの正規...
-
else if文の順序を変えることに...
-
テキストボックスにセルの値を...
-
「Me」を「Form1」にするとエラ...
-
バナーの枠を飛び出して動くア...
-
インスタンスとポインタ
-
先読み画像を後で生成するMCの...
-
【ExcelVBA】ファイル名をセル...
-
縦横比率のを変えずに画像のサ...
-
VB6.0のHideのバグ?
-
RPG(AS400)の本、サイトってあ...
-
python ボタンを押すと複数の関...
-
マウス自体の移動量の取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ボタンの上に重なっているMCを...
-
ムービークリップをボタン操作...
-
autohotkeyかAutoITでGUiランチャ
-
FLASHで画面の最大化と100%表示...
-
ボタンをクリックしてスタート...
-
getURLの使い方
-
FLASHでドロップダウンメニュー...
-
ボタンをクリックするとフェー...
-
VB 基本的なプログラム √ ...
-
1つのボタンで外部ファイルを...
-
縦のメニューバー作成方法で困...
-
ムービークリップの中にボタン...
-
MCの中のActionScript
-
ボタンの無効化
-
的当てゲーム
-
FLASH5でテキストのスクロール
-
マウスを押している間繰り返す
-
外部ファイルでテキスト、リン...
-
FLASHのボタン操作について・・...
-
FLASH MX ロールオーバーボタン
おすすめ情報