トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     【横スクロール】 Array[ ]内が不明な場合は?
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
o2aqua
Åê¹ÆNo.39400
投稿日時: 2008-7-3 13:12
新米
居住地: 東京
投稿: 7
使用環境:
WindowsXP HomeEdition
Flash8
ActionScript2.0
【横スクロール】 Array[ ]内が不明な場合は?
はじめまして。

一度に4枚ずつ表示され、左右ボタンで4枚ずつ左右に切り替わるものを作成しています。

1フレーム目ではライブラリから、中身が空のCaseMcというムービークリップの中に100pxの識別子ImgSetというムービークリップ(インスタンス名をimgMCとします)をi個Attachし、一定の間隔をあけて並べ、それぞれにXMLで外部からの画像を読み込ませています。
さらにそのMCには一度に表示させる4枚分の大きさのマスクをかけました。

問題はここからです。

右ボタンを一度押すと、imgMCx4枚分の座標ずつ左へ(xマイナス方向へ)移動させたいです。

imgMc一枚の幅が100pxなので、-400pxずつ引いた数値をArray[]内に入れてやればいいのですが、xmlのNode数によって、imgMCの数が変動するので、Array[]内の数値をいくつ用意していいのかわかりません。

XmlのNodeの数を16とすると、

Node数÷4=4
imgの幅×4=400

Array値は Array[0,-400,-800,-1200]

実際は16ではなくi個なのですが、これをスクリプトとしてどう書けばいいのでしょうか。

環境:
WindowsXP HomeEdition
Flash8 Actionscript2.0

必要かどうかわかりませんが、1フレームめのスクリプトを載せておきます。


var my_xml:XML = new XML();
my_xml.ignoreWhite = true;
my_xml.load("images.xml");
var loader = new MovieClipLoader();

my_xml.onLoad = function(s) {
if (s) {
trace("success");
rootNode01 = my_xml.firstChild;
total = rootNode01.childNodes.length;
for (var i:Number = 0; i<total; i++) {
keta = String(i);
if (keta.length == 1) {
Img= "img0";
Ci = "0"+i;
} else if (keta.length == 2) {
Img= "img";
Ci = i;
}
//Attachしてi個複製する
_level0.CaseMc.attachMovie("ImgSet", img+Ci, i);
//位置を調整する
_level0.CaseMc[img+Ci]._x = i*130;
_level0.CaseMc[img+Ci]._y = 6;
trace("img"+Ci);
//画像を読み込む

loader.loadClip(rootNode01.childNodes[i].childNodes[2].firstChild.nodeValue, _level0.CaseMc[img+Ci]);
//マスク(my_mask)をかける
_level0.CaseMc.setMask(_level0.my_mask);
_level0.my_mask.cacheAsBitmap = true;
}
}
};

宜しくお願いします。
ひろゆき
Åê¹ÆNo.39402
投稿日時: 2008-7-3 13:50
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 【横スクロール】 Array[ ]内が不明な場合は?
アカウント編集」で、編集環境は書いておきましょう
プロフィール・使用環境記入のお願い
#その他の欄に記入すれば、使用環境として表示されるはずです。

外部データを読み込む際には、load() をする前に、
onLoad を定義した方が良いと思います。
var loader = new MovieClipLoader();
var my_xml:XML = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(s:Boolean):Void {
	if (s) {
		var rootNode01:XMLNode = this.firstChild;
		var total:Number = rootNode01.childNodes.length;
		for (var i:Number = 0; i < total; i++) {
			/*
			var keta:String = String(i);
			if (keta.length == 1) {
				var Img:String= "img0";
				var Ci:String = "0"+i;
			} else if (keta.length == 2) {
				var Img:String= "img";
				var Ci:String = String(i);
			}
			var _mc:MovieClip = CaseMc.attachMovie("ImgSet", img+Ci, i, {_x: i*130, _y: 6});
			*/
			var _mc:MovieClip = CaseMc.attachMovie("ImgSet", "img"+i, i, {_x: i*130, _y: 6});
			var fileName:String = rootNode01.childNodes[i].childNodes[2].firstChild.nodeValue;
			loader.loadClip(fileName, _mc);
			CaseMc.setMask(my_mask);
			//my_mask.cacheAsBitmap = true;
		}
	}
};
my_xml.load("images.xml");

スクリプトを _root に記述しているのであれば、_level0 は、不要です。
また、cacheAsBitmap = true; も必要性があるのでしょうか?
インスタンス名も、01?10にする必要はないように思います。


上記のスクリプトは、本題の問題とは、全く無関係のように思います。
もっとシンプルにしないと、問題の本質が捉えづらくなるのではないでしょうか?
引用:
imgMc一枚の幅が100pxなので、-400pxずつ引いた数値をArray[]内に入れてやればいいのですが、xmlのNode数によって、imgMCの数が変動するので、Array[]内の数値をいくつ用意していいのかわかりません。

右ボタンのインスタンス名が rightBtn であるとして。
var total:Number = 16;
var posList:Array = new Array();
for (var i:Number = 0; i < total; i++) {
	var _mc:MovieClip = CaseMc.attachMovie("ImgSet", "img"+i, i, {_x: i*130, _y: 6});
	posList.push(-400*i);
}
rightBtn.onRelease = function():Void {
	trace(posList);
};

この配列(posList)をどう利用しようというのか、説明されておられないので、
第三者には、これ以上はわかり得ませんが。


----------------
質問する際は、回答者に具体的な情報を与えてください。

o2aqua
Åê¹ÆNo.39406
投稿日時: 2008-7-3 16:25
新米
居住地: 東京
投稿: 7
使用環境:
WindowsXP HomeEdition
Flash8
ActionScript2.0
Re: 【横スクロール】 Array[ ]内が不明な場合は?
お返事ありがとうございます!

使用環境に関するご指摘ありがとうございました。
情報更新させていただきました。

>上記のスクリプトは、本題の問題とは、全く無関係のように思います。

ですよね、やっぱり。
余計なことしました。申し訳ないです。

ですが添削までしてくださり、とても感謝しております。
posListもおかげ様でそれぞれのx座標を出すことができました。

本当にお世話になりました。

また機会があれば、どうぞ宜しくお願いします。

質問の仕方も、もっと勉強します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops