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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     配列を使ったムービークリップの複製の簡略化について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
DEN
Åê¹ÆNo.40475
投稿日時: 2008-10-10 9:54
常連
居住地: 千葉県佐倉市
投稿: 84
使用環境:
Mac OS9.2,10.3
WinXP
FlashMX,Flash8
Player7,Player9
配列を使ったムービークリップの複製の簡略化について
現在、現状のものを簡略化し、オブジェクトを増やした場合にも対応のできるように使用と思っております。
1フレーム目に記載していますが、
eval()などを使いましたが今度は逆に反応しなくなってしまいました。

作業効率および、PC処理能力に負担のかからない良い方法がありましたら教えていただきたいです。


this.stop();

_global.num = 0;
text_Array = new Array();
text_Array[0] = "test01";
text_Array[1] = "test02";

_root.zentaiMc._visible=1;

_root.zentaiMc.conMc01.btn.onRollOver = function() {
_root.zentaiMc.conMc01.createEmptyMovieClip("change_mc01", 1);
_root.zentaiMc.conMc01.change_mc01.textLength = _root.text_Array[0].length;
_root.zentaiMc.conMc01.change_mc01.i = 0;
_root.zentaiMc.conMc01.change_mc01.txt = "";
_root.zentaiMc.conMc01.change_mc01.num = num;
_root.zentaiMc.conMc01.change_mc01.onEnterFrame = function() {
if (this.textLength>=this.i) {
this.i++;
var ranText = "";
var j = 0;
while (j<this.textLength-this.txt.length) {
ranText = ranText+String.fromCharCode(random(57)+65);
j++;
};
this.txt = _root.text_Array[0].substring(0, this.i);
_root.zentaiMc.conMc01.f_text.text = this.txt+ranText;
};
};
};

_root.zentaiMc.conMc01.btn.onRelease = function() {
_root.zentaiMc.conMc01._alpha = 50;
_root.zentaiMc._visible=false;
_root.gotoAndStop(2);
}


----------------
DEN

あにぃ
Åê¹ÆNo.40476
投稿日時: 2008-10-10 11:16
職人
居住地: 北海道
投稿: 250
使用環境:
Flash8
FlashCS3
WinXP
FlashLite1.1 / 2.0
Re: 配列を使ったムービークリップの複製の簡略化について
タイトルと内容があっていませんし、説明不足のため、なにを言いたいのかわかりません。
すくなくとも、配列を使ったムービークリップの複製ではないように見受けられます。
配列には表示する文字しかはいっていませんし。

ソースにもコメントがはいっていませんし、なにをするソースなのかについても説明されていません。
もうちょっとわかりやすく説明願います。


とりあえず、私なら現状のソースを下記のように書きますが。

text_Array = new Array();
text_Array[0] = "test01";
text_Array[1] = "test02";
_root.zentaiMc._visible = true;
//whileで回すのがばかばかしいので、100文字程度のランダム文字列を作成しておく
ranText = "";
for (i=0; i<100; i++) {
	ranText += String.fromCharCode(Math.random()*57+65);
}
//conMCの初期設定用
function _onLoad(target:MovieClip, str:String) {
	//enterFrameを回す用にMCを用意。
	ctarget = target.createEmptyMovieClip("change_mc", 1);
	//文字の長さと文字を用意したMCに格納
	ctarget.textLength = str.length;
	ctarget.str = str;
	//ロールオーバーの設定
	target.onRollOver = _onRollOver;
}
//ロールオーバーされた時の処理
function _onRollOver() {
	//いま何文字かえたのかを格納する変数を初期化
	this.change_mc.i = 0;
	this.change_mc.onEnterFrame = function() {
		//処理がおわったら
		if (this.textLength<=this.i) {
			//enterFrameを消去
			delete this.onEnterFrame;
		} else {
			//そうじゃなければ、一文字分元に戻す。
			this.i++;
			//ランダムな文字を表示(80文字までというのは適当)
			this._parent.f_text.text = this.str.substring(0, this.i)+_root.ranText.substr(Math.random()*80, this.textLength-this.i);
		}
	};
}
//コンテンツMCの初期設定。
_onLoad(_root.zentaiMc.conMc01, text_Array[0]);



----------------
質問する際には、ご自分でできる限り調べてから投稿して下さい

P・S 職人おめでとう。(08/10/09)

DEN
Åê¹ÆNo.40477
投稿日時: 2008-10-10 11:42
常連
居住地: 千葉県佐倉市
投稿: 84
使用環境:
Mac OS9.2,10.3
WinXP
FlashMX,Flash8
Player7,Player9
Re: 配列を使ったムービークリップの複製の簡略化について
あにぃさん<ありがとうございます。
すみません。補足いたします。

サンプルデータをサーバーにアップしました。
http://www.newline-graphics.com/parapara/


conMc01を50個とかに増やすのに更新を考えて現状のソースをfor文などを使いまとめて管理をしたいと思っております。

一度まとめますので少し時間をください。


----------------
DEN

DEN
Åê¹ÆNo.40478
投稿日時: 2008-10-10 12:01
常連
居住地: 千葉県佐倉市
投稿: 84
使用環境:
Mac OS9.2,10.3
WinXP
FlashMX,Flash8
Player7,Player9
Re: 配列を使ったムービークリップの複製の簡略化について
現在あげているもののソースです。
1フレーム目に記載しています。

_global.num = 0;
text_Array = new Array();
text_Array[0] = "tteesstt01";
text_Array[1] = "tteesstt02";


_root.zentaiMc.conMc01.btn.onRollOver = function() {
_root.zentaiMc.conMc01.createEmptyMovieClip("change_mc01", 1);
_root.zentaiMc.conMc01.change_mc01.textLength = _root.text_Array[0].length;
_root.zentaiMc.conMc01.change_mc01.i = 0;
_root.zentaiMc.conMc01.change_mc01.txt = "";
_root.zentaiMc.conMc01.change_mc01.num = num;
_root.zentaiMc.conMc01.change_mc01.onEnterFrame = function() {
if (this.textLength>=this.i) {
this.i++;
var ranText = "";
var j = 0;
while (j<this.textLength-this.txt.length) {
ranText = ranText+String.fromCharCode(random(57)+65);
j++;
};
this.txt = _root.text_Array[0].substring(0, this.i);
_root.zentaiMc.conMc01.f_text.text = this.txt+ranText;
};
};
};


_root.zentaiMc.conMc02.btn.onRollOver = function() {
_root.zentaiMc.conMc02.createEmptyMovieClip("change_mc02", 1);
_root.zentaiMc.conMc02.change_mc02.textLength = _root.text_Array[1].length;
_root.zentaiMc.conMc02.change_mc02.i = 0;
_root.zentaiMc.conMc02.change_mc02.txt = "";
_root.zentaiMc.conMc02.change_mc02.num = num;
_root.zentaiMc.conMc02.change_mc02.onEnterFrame = function() {
if (this.textLength>=this.i) {
this.i++;
var ranText = "";
var j = 0;
while (j<this.textLength-this.txt.length) {
ranText = ranText+String.fromCharCode(random(57)+65);
j++;
};
this.txt = _root.text_Array[1].substring(0, this.i);
_root.zentaiMc.conMc02.f_text.text = this.txt+ranText;
};
};
};

ボタンを押したときに、functionなどでエンジンを呼び出し、
引数などで、調整して各ボタンに反映できればと思っています。

または、MCの複製によりthis["conMc"+i]などで反映の方がよいのでしょうか?

PCの処理に負担にならない方法で出来れば良いとは思っています。


----------------
DEN

あにぃ
Åê¹ÆNo.40480
投稿日時: 2008-10-10 14:47
職人
居住地: 北海道
投稿: 250
使用環境:
Flash8
FlashCS3
WinXP
FlashLite1.1 / 2.0
Re: 配列を使ったムービークリップの複製の簡略化について

this.stop();
//MCの配置座標と文字列を格納
mAry = new Array();
mAry[0] = {x:0, y:0, str:"test01"};
mAry[1] = {x:0, y:100, str:"test02"};
_root.zentaiMc._visible = true;
//whileで回すのがばかばかしいので、100文字程度のランダム文字列を作成しておく
ranText = "";
for (i=0; i<100; i++) {
	ranText += String.fromCharCode(Math.random()*57+65);
}
//conMCの初期設定用
function _onLoad(target:MovieClip, str:String) {
	//enterFrameを回す用にMCを用意。
	ctarget = target.createEmptyMovieClip("change_mc", 1);
	//文字の長さと文字を用意したMCに格納
	ctarget.textLength = str.length;
	ctarget.str = str;
	//ロールオーバーの設定
	target.onRollOver = _onRollOver;
}
//ロールオーバーされた時の処理
function _onRollOver() {
	//いま何文字かえたのかを格納する変数を初期化
	this.change_mc.i = 0;
	this.change_mc.onEnterFrame = function() {
		//処理がおわったら
		if (this.textLength<=this.i) {
			//enterFrameを消去
			delete this.onEnterFrame;
		} else {
			//そうじゃなければ、一文字分元に戻す。
			this.i++;
			//ランダムな文字を表示(80文字までというのは適当)
			this._parent.f_text.text = this.str.substring(0, this.i)+_root.ranText.substr(Math.random()*80, this.textLength-this.i);
		}
	};
}
//コンテンツを配置
for (i=0; i<mAry.length; i++) {
	tgt = _root.zentaiMc.conMc.duplicateMovieClip("conMc"+i, i);
	tgt._x = mAry[i].x;
	tgt._y = mAry[i].y;
	//コンテンツMCの初期設定。
	_onLoad(_root.zentaiMc["conMc"+i], mAry[i].str);
}


こういうことでしょうか?


----------------
質問する際には、ご自分でできる限り調べてから投稿して下さい

P・S 職人おめでとう。(08/10/09)

DEN
Åê¹ÆNo.40482
投稿日時: 2008-10-10 16:34
常連
居住地: 千葉県佐倉市
投稿: 84
使用環境:
Mac OS9.2,10.3
WinXP
FlashMX,Flash8
Player7,Player9
Re: 配列を使ったムービークリップの複製の簡略化について
あにぃさん<ありがとうございます。
今はめてみましたが動きませんでした。

ちょっといじって、理解して返信します。


----------------
DEN

あにぃ
Åê¹ÆNo.40484
投稿日時: 2008-10-10 16:46
職人
居住地: 北海道
投稿: 250
使用環境:
Flash8
FlashCS3
WinXP
FlashLite1.1 / 2.0
Re: 配列を使ったムービークリップの複製の簡略化について
説明しわすれていました。
duplicate用にconMc01をzentaiMcのステージ外にインスタンス名conMcとして配置すると動くと思います。


----------------
質問する際には、ご自分でできる限り調べてから投稿して下さい

P・S 職人おめでとう。(08/10/09)

DEN
Åê¹ÆNo.40554
投稿日時: 2008-10-19 23:55
常連
居住地: 千葉県佐倉市
投稿: 84
使用環境:
Mac OS9.2,10.3
WinXP
FlashMX,Flash8
Player7,Player9
Re: 配列を使ったムービークリップの複製の簡略化について
お返事送れてしまい申し訳ありません。

conMcを追加したところ動きました。T-T

まだ自分が理解をちゃんとしていないので、towardさんのソースを拝見しながら勉強してみたいと思います。


----------------
DEN

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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