![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ASに触れたての初心者です。
Actionscript3.0で、ボタンなどを使わない、ただ画像を順次流すだけのスライドショーが作りたいです。
何もないステージに、まずムービークリップ「Images1」が2秒くらかけて画面上からスライドして来ます。
ステージぴったりに収まった(座標が0,0になった)ところで2秒ほどImages1を見てもらいます。
次に、Images1の上にトランプが重なるように、新たなMC、「Images2」が同じような動作で降りてきます。
これも、ステージにぴたりと合わさったところで2秒ほど静止し、その上からさらに「Images3」が同じような動作で重なっていきます。
これをImages5くらいまで順次重ねていって、不要になった層は適時削除していきたいです。
Images1を「スライドしてくる」「数秒とどまる」「消える」といった動作はできたのですが、それをmages5まで繰り返させるのが全く解りませんでした…。
タイムライン上だけで作ると惜しいものができたのですが、Images5までいってImages1に戻ったときに、Images5の上からImages1を重ねるという操作がわからず、タイムラインで作るのを諦めました。
いったいどのようにスクリプトを組んだら良いのでしょうか?
大変困っています。どなたかお願い致します。
現時点のスクリプトは以下のとおりになります。
import flash.utils.Timer;
import flash.display.MovieClip;
import flash.events.TimerEvent;
//ムービークリップ
var Images1:Sprite = new Sprite();
Images1.graphics.beginFill(0x000000);
Images1.graphics.drawRect(0, 0,300,-500);
Images1.graphics.endFill();
addChild(Images1);
//移動
this.addEventListener(Event.ENTER_FRAME,timerfunc);
function timerfunc(e:Event):void
{
Images1.y=Images1.y+10;//スライド
if(Images1.y>500)Images1.y=500;//スライドのとまる場所
timer1.start();//タイマースタート
}
//一定時間待ってから消えるタイマー
var timer1:Timer = new Timer(6000,1);
timer1.addEventListener(TimerEvent.TIMER, timerHandler1);
function timerHandler1(e:TimerEvent):void{
removeChild(Images1);
removeEventListener(TimerEvent.TIMER, timerHandler1);
removeEventListener(Event.ENTER_FRAME,timerfunc);
}
![「[AS3]自動的に画像が重なっていくスラ」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/4/1072976_5497bddc59f80/M.jpg)
No.1ベストアンサー
- 回答日時:
> タイムライン上だけで作ると惜しいものができたのですが、
> Images5までいってImages1に戻ったときに、
> Images5の上からImages1を重ねるという操作がわからず、
> タイムラインで作るのを諦めました。
と書かれていらっしゃいますが,
そこら辺をどうするかを "具体的にイメージする" ということができなければ
結局何でやっても同じだと思いますよ。。。
何にしてもまずは具体的な動作シナリオ(アルゴリズム(手品のタネ))のイメージを作って
そのイメージ通りに動くように
タイムラインで動きを作ったり,
ActionScriptをコーディングしたりするわけですから。
タイムラインで作る方法は
定番中の定番の方法ですが下の【添付図】↓をご参考に。
【添付図】↓を見てイメージは湧きましたか?
本来,これくらいの仕組みは自力で考え出さなければなりません。
======================
次にスクリプトです。
例えばメインタイムラインのフレーム1など,
フレームに書くスクリプト例です↓。
//---------------------------------------------
//Imagesの色分け用に色指定する配列を適当に作成
var colArr:Array=[0xFF0000,0x00FF00,0x0000FF,0xFFFF00,0x00FFFF];
//スプライト Images1~Images5 を一気に作成&配置
for (var i:int=1; i<=5; i++) {
this["Images"+i] = new Sprite();
this["Images"+i].graphics.beginFill(colArr[i-1]);
this["Images"+i].graphics.drawRect(0, 0,300,-500);
this["Images"+i].graphics.endFill();
addChild(this["Images"+i]);
}
//2秒後に関数「startImages」を実行するタイマーを用意
var myTimer:Timer=new Timer(2000,1);
myTimer.addEventListener(TimerEvent.TIMER, startImages);
//カウンタ用の変数cntを用意
var cnt:int=0;
//Images○の動作を開始させる関数「startImages」の定義
function startImages(e:TimerEvent):void {
//カウンタをカウントアップ
cnt = (cnt<5)? cnt+1:1;
//動かす「Images○」のy座標を0にする
this["Images"+cnt].y=0;
//動かす「Images○」の表示順を一番上(最高深度)に移動
this.setChildIndex(this["Images"+cnt], this.numChildren-1);
//毎フレーム 関数「moveImages」を実行
this.addEventListener(Event.ENTER_FRAME,moveImages);
}
//関数「moveImages」の定義
function moveImages(e:Event):void {
//「Images○」をスライド
this["Images"+cnt].y+=10;
//「Images○」のy座標が500以上になれば
if (this["Images"+cnt].y>=500) {
//「Images○」のy座標を500で固定して
this["Images"+cnt].y=500;
//毎フレーム 関数「moveImages」を実行するのを解除
this.removeEventListener(Event.ENTER_FRAME,moveImages);
//タイマースタート(2秒後に「startImages」が実行される)
myTimer.start();
}
}
//関数「startImages」を初回実行
startImages(null);
//---------------------------------------------
タイムラインで作るにしてもスクリプトで作るにしても
やはりどちらにしても肝腎なのは,
具体的な動作シナリオのイメージでしょうね。
![「[AS3]自動的に画像が重なっていくスラ」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/f/1373636_5497e9774f86b/M.jpg)
ありがとうございます!お蔭様で、理想的な動きができました!感謝致します。
一行一行説明を入れてくださっているので、とてもわかりやすく、またカスタマイズしやすく非常に助かりました!
画像の添付までありがとうございます。同じようなかたちで作成していたのですが、gotoAndPlayからの指定を、私はこの図で言うと7フレーム目に指定しておりました。思うような動作ができなかったのは、もしかしてそれが原因だったのかもしれません…。(そこにも怪しいASを書いていたので、そちらが原因かもしれませんが…)
お恥ずかしながら、「できる所から作ってみよう」として作った結果がこれです…。きちんと頭でシナリオを組み立てられるように、がんばろうと思います。
また今回のものとは別の制作物などで、BlurFiltanさんが過去にされた回答に、何度も助けられました。何回も見返して、勉強させていただいております。
そのBlurFiltanさんにご回答いただけて、本当に嬉しいです。
この場でお礼申し上げます。本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- Visual Basic(VBA) 該当セルに行替えを含むデータを命令文に入れて、2行に表示したい。 5 2023/07/20 11:51
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
- PHP 'member_picture/'に/がありますが 、「スラッシュ」は必要でしょうか? 1 2022/11/27 04:32
- HTML・CSS ブロックエディターで作りつつ、画像を挿入しつつ、画像にスタイルシートのコードを付ける方法はありますか 1 2022/08/23 18:46
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マウス自体の移動量の取得
-
C言語でのマウスを移動とマウス...
-
マウスを近づけるとオブジェク...
-
楕円の軌道に傾斜をつける方法...
-
変数に256文字以上のテキストを...
-
photoshopで書いた四角の枠の中...
-
PHPでボタンをクリックすると変...
-
四乗根を英語で言うと・・・
-
VBAで改行の入ったデータの正規...
-
ActionScriptエディタを作りた...
-
VBでテキストエディタの上書き保存
-
else if文の順序を変えることに...
-
CreateDialogについて
-
携帯サイトにフラッシュで作成...
-
テキストボックスにセルの値を...
-
ActionScript3のMovieClipについて
-
ヒット領域について
-
一つのキーワードで2つのテキス...
-
インスタンスとポインタ
-
複数行テキスト領域に中の文章...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マウス自体の移動量の取得
-
C言語でのマウスを移動とマウス...
-
MCの移動,透明の仕方について...
-
楕円の軌道に傾斜をつける方法...
-
画面の範囲選択
-
進行方向に徐々に停止するスク...
-
スクロール処理(早急にお伺い...
-
FLASHのActivescriptでオブジェ...
-
スライドバーを用いて画面の拡...
-
下記のサイトのTOPページにある...
-
正6面体を一定の角度で回転さ...
-
Suzukaで一行ニュースティッカ...
-
プログラミング、アーキテクチ...
-
photoshopで書いた四角の枠の中...
-
YOASOBI
-
VBScriptでMsgBoxのYesNoボック...
-
テキストボックスの中身をリセ...
-
五芒星は、悪魔崇拝とどういう...
-
VBAで改行の入ったデータの正規...
-
python ボタンを押すと複数の関...
おすすめ情報