![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
ActionScriptで以下のサイトのように、下段のサムネールが左右にスクロールするメニューを作成したいのですが、実現方法がわかりません。
http://www.wasedazemi.com/
・下段の最右、または最左の矢印ボタンを押すとその方向にメニュー1個分スクロールし、下段の真ん中のメニューの画像が上段に表示される。
・下段の任意のサムネールを押すとその画像が下段真ん中に移動し、上段にその画像が表示される。
・下段のサムネールはループしていて、スクロールをし続けても端にならずに回り続ける。
・上段の画像にマウスオーバーすると青い枠線が表示される。
ActionScript 3.0、Flash CS5を利用しています。
ご教授よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
質問内容が欲張り過ぎでしょう。
まるで業者に対する客の仕様発注書です。
質問に全て回答するなら本ができてしまいますよ。
(内容がそれだけ難しいという意味ではなく,「論理」や「手順」を説明するには相当な字数や画像が必要という意味。)
字数制限も厳しく画像が1枚しか貼れないココでは説明不可能です。
特に,
>・上段の画像にマウスオーバーすると青い枠線が表示される。
それくらいのこと
モーショントゥイーンとかシェイプトゥイーンとか使って自力で作成すべきでしょう。
とにかく字数制限もあるため
上記以外の項目についてスクリプトのみ(日本語説明抜き)で回答します。
CS5 で新規ドキュメントを作成し
フレーム1にコピペするスクリプト例です↓。
//---------------------------
[SWF(frameRate = "20",width = "940",height = "380")]
var col_arr:Array = [0xFF6666,0x66FF66,0x6666FF,0xCCCC00,0xCC66CC,0x66CCCC];
var c_len:int = col_arr.length;
var cnt:int = 0;
var big_mc_arr:Array = new Array();
for (var i:int = 0; i<c_len; i++) {
big_mc_arr[i] = new MovieClip();
with (big_mc_arr[i].graphics) {
beginFill(col_arr[i]);
drawRect(0,0,900,280);
endFill();
}
big_mc_arr[i].x = 20;
big_mc_arr[i].y = 20;
addChild(big_mc_arr[i]);
}
var slide_mc:MovieClip = new MovieClip();
slide_mc.x = 50;
slide_mc.y = 310;
addChild(slide_mc);
var small_mc_arr:Array = new Array();
for (i= 0; i<c_len*2; i++) {
small_mc_arr[i] = new MovieClip();
with (small_mc_arr[i].graphics) {
beginFill(col_arr[(i>=c_len)? i-c_len:i]);
drawRect(0,0,160,50);
endFill();
}
small_mc_arr[i].n = i;
small_mc_arr[i].x = 170 * i;
small_mc_arr[i].addEventListener(MouseEvent.CLICK,setCnt);
slide_mc.addChild(small_mc_arr[i]);
}
var mask_mc:MovieClip = new MovieClip();
with (mask_mc.graphics) {
beginFill(0x000000);
drawRect(0,0,840,50);
endFill();
}
mask_mc.x = 50;
mask_mc.y = 310;
addChild(mask_mc);
slide_mc.mask = mask_mc;
var l_btn_shape:Shape = new Shape();
with (l_btn_shape.graphics) {
beginFill(0x666666);
drawRect(0,0,20,50);
endFill();
beginFill(0xFFFFFF);
moveTo(3,25);
lineTo(15,18);
lineTo(15,32);
endFill();
}
var l_btn:SimpleButton = new SimpleButton();
with (l_btn) {
upState = overState = downState = hitTestState = l_btn_shape;
x = 20;
y = 310;
}
addChild(l_btn);
var r_btn_shape:Shape = new Shape();
with (r_btn_shape.graphics) {
beginFill(0x666666);
drawRect(0,0,20,50);
endFill();
beginFill(0xFFFFFF);
moveTo(5,18);
lineTo(17,25);
lineTo(5,32);
endFill();
}
var r_btn:SimpleButton = new SimpleButton();
with (r_btn) {
upState = overState = downState = hitTestState = r_btn_shape;
x = 900;
y = 310;
}
addChild(r_btn);
slide_mc.addEventListener(Event.ENTER_FRAME,approacheSlide);
function approacheSlide(e:Event):void {
e.target.x += ((cnt*170+50)-e.target.x)/5;
if (e.target.x>50) {
e.target.x-=c_len*170;
cnt-=c_len;
} else if (e.target.x < 50-c_len*170) {
e.target.x+=c_len*170;
cnt+=c_len;
}
}
l_btn.addEventListener(MouseEvent.CLICK,upCnt);
function upCnt(e:Event):void {
cnt+=1;
setBigMC();
}
r_btn.addEventListener(MouseEvent.CLICK,downCnt);
function downCnt(e:Event):void {
cnt-=1;
setBigMC();
}
function setCnt(e:Event):void {
cnt=2-e.currentTarget.n;
setBigMC();
}
function setBigMC():void {
addChild(big_mc_arr[(cnt <= 2-c_len)?2-cnt-c_len:2-cnt]);
}
setBigMC();
var tmr:Timer=new Timer(5000,0);
tmr.addEventListener(TimerEvent.TIMER,downCnt);
tmr.start();
this.addEventListener(MouseEvent.MOUSE_OVER,stopTimer);
function stopTimer(e:MouseEvent):void {
tmr.stop();
}
this.addEventListener(MouseEvent.MOUSE_OUT,startTimer);
function startTimer(e:MouseEvent):void {
tmr.start();
}
var point_sh:Shape = new Shape();
with (point_sh.graphics) {
beginFill(0x666666);
moveTo(0,0);
lineTo(0,-3);
lineTo(74,-3);
lineTo(80,-8);
lineTo(86,-3);
lineTo(160,-3);
lineTo(160,-0);
endFill();
}
point_sh.x=390;
point_sh.y=309;
addChild(point_sh);
//---------------------------
上記スクリプトを フレーム1 にコピペして
そのままパブリッシュやムービープレビューなどすれば動作確認できると思います。
本来 Sprite で済む部分にも
あえて MovieClip を使っているのは
「本来そのようなものはそういうムービークリップを手作業で作れば良い。」
という意味合い(思い)を含めています。
![「ActionScript スクロールメニ」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/a/1373636_5497e62dd960b/M.jpg)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Word(ワード) Word2013 縦書き上下二段の表、改行を続けると次ページに情報が表示されるようにしたい 3 2022/06/16 09:24
- 統計学 加重平均を用いた運搬距離の算出をしたいです。 1 2022/08/10 09:10
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- Excel(エクセル) ログインIDの一発入力? 5 2023/07/07 12:30
- 楽器・演奏 楽譜読める方に質問です。 ト音記号とへ音記号が上段下段にあって、右手左手で弾くと思いますが、画像の場 5 2022/10/19 13:46
- Illustrator(イラストレーター) 「頂点で線分を伸ばす」作業がうまく行かない。 1 2022/09/09 10:19
- レトロゲーム ファミコンのインベーダの質問その3 背景にインベーダーを描画したとしても、なぜ動けるのか? 3 2022/07/08 16:58
- iPhone(アイフォーン) 同じ写真と動画をiOSが検出する便利な機能 写真のアルバムタブにて、画面を一番下までスクロールすると 3 2023/01/23 15:41
- 薄毛・抜け毛 このつむじハゲてますか?中2です 画像左側のつむじについて。 ドライヤーで乾かした後見たらこうなって 1 2022/04/23 02:30
- その他(プログラミング・Web制作) python3.7を使ってやや複雑なCSVの処理をしたい 2 2022/06/05 07:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
potplayerについて質問です
-
フラッシュの画像を合わせるパ...
-
レジリエンス 変換キーが作動し...
-
Python でシャットダウンのコマ...
-
Adobe Flash Player とは?
-
ウインドウズ10を使っています...
-
サーフェスで音楽を聴くにはど...
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画像表示をアルファでフェード...
-
ムービークリップ変換について...
-
ActionScript スクロールメニュー
-
何で重なり合おうとするんでし...
-
ステージにある複数のインスタ...
-
for文を使ったボタン
-
配列に入れたムービークリップ...
-
○秒間実行 AS3
-
Actionscript3.0 子のイベント...
-
Actionscript3.0のクラス定義の...
-
FLASH 定型のASを登録しといて...
-
addChildの使い方
-
外部テキスト読み込みでマーキ...
-
AS3の配列の中にアクセス
-
関数を停止するには。。。。
-
as3 addEventListenerの動的な...
-
actionscript3.0 オブジェクト...
-
actionscript3.0 データ型について
-
複数mcのランダム再生とmc指定...
-
photoshopで書いた四角の枠の中...
おすすめ情報