ActionScript 誰かが物凄い勢いで解答するスレ 10at SWF
ActionScript 誰かが物凄い勢いで解答するスレ 10 - 暇つぶし2ch100:Now_loading...774KB
05/12/27 11:10:59 aSYq7O1u
>>99
横レスだが、正直その記述のなにが、>>95の違いをうむのかさっぱりわからないな。


配列アクセス演算子の場合、

 var str = "my_lv.variable1";
 var foo = this[str];

 var foo = this["my_lv.variable1"];

は等価な動きをしたはずだろ? なんでevalだと等価じゃないねん。

101:Now_loading...774KB
05/12/27 11:14:27 dK0r+5lZ
実験
var my_lv = new LoadVars;
my_lv.variable1 = 1;
var str = "my_lv.variable1";
trace(eval(str));
trace(eval("my_lv.variable1"));
trace(my_lv.variable1);
結果
1
1
1

102:Now_loading...774KB
05/12/27 11:29:08 Emv33iyi
evel()なんて使わなけりゃいいじゃんか
そんな機能のメソッドがない言語出身なので気にしたこともないよ

103:Now_loading...774KB
05/12/27 11:33:31 aSYq7O1u
>>101を受けて、さらに実験。

var my_lv = new LoadVars;
my_lv.variable1 = 2;
var str = "my_lv.variable1";
trace(eval(str));
trace(eval("my_lv.variable1"));
trace(my_lv.variable1);

var foo = eval(str);
trace(foo);
foo = eval("my_lv.variable1");
trace(foo);
foo = my_lv.variable1;
trace(foo);

結果
2
2
2
2
2
2

結論1.>>95の使い方で、やっぱりeval()は等価な動きをしてくれる。
結論2.>>91がやってるのはスペルミスかなにか。
結論3.ID:V46A8gwQは見当違いなレスばかりしていた。

104:Now_loading...774KB
05/12/27 11:39:41 V46A8gwQ
うーん、なんか、変な風に取られてるけど、漏れの言いたかったのは
以下の違いはどうなの?ってことなんだ。見当違いだったらスマン。

var str = "my_lv.variable1";
var foo = eval("str");
trace(foo);
var foo = eval(str);
trace(foo);

105:91
05/12/27 12:36:59 W3z3Aqly
>>99
事前調査をせずに質問するほどバカではありません。
調べても記述されている内容がわからなかったから、「わからない」と申し上げたのですが。説明不足ですみません m(-_-)m
リンク先にはヘルプと同じ内容が書かれていました。

>>100
示されたソースで試したところ、こちらは等価な動作をしました。
こちらで代用できないか検討してみます。

>>101 >>103
その処理をどこに記述したか教えていただけるでしょうか?
なお私は、恐らく、問題はクラス内の関数内に処理を記述したことに起因しているのではないかと踏んでいます。

>>102
eval の使用はできるだけ避けていたのですが、今回は使わざるを得ない状況でした。
今は、>>100 に示していただいた配列アクセス演算子を使った方法で代用できないかと検討中です。
ちなみに私は C 出身です。

>>104
出力結果(my_lv.variable1 = 123 として):
my_lv.variable1
undefined

意図していた結果(123)とは違うようです。

106:101
05/12/27 12:41:47 dK0r+5lZ
>>105
単にフレームにそれだけ書いて実行しただけです。
なので、クラス内での書き方ではなく、
var my_lv = new LoadVars;
という宣言になっています。

107:91
05/12/27 13:11:41 W3z3Aqly
>>106
わかりました。
フレーム内に、示されたとおりのソースコードを記述したところ、>>101 と同じ実行結果を得ました。
やはり、原因はソースそのものではなく、書いた場所にあるのではないかと思います。

念のため、問題のソースコードを載せたサンプルを上げておきます。
私の環境が悪いということも考えられますので、ご自身の目で確かめてください。
 URLリンク(simfan.cn1.jp)
圧縮ファイル内には、次のサンプルがあります。

- sample_a.fla
>>101 の実験ソースを、>>106 の通りフレーム内に記述したものです。

私の環境での実行結果:
1
1
1

- sample_b.fla , Hogehoge.as
>>101 の実験ソースを、今度は場所を変えて、クラス内の関数内に記述したものです。

私の環境での実行結果:
undefined
1
1

尚、私が使用しているのは、Flash MX Pro 2004 です。

108:103
05/12/27 20:31:44 O1q63UuZ
>>107
function piyopiyo() {
my_lv.variable1 = 2;
var a = "my_lv";
var b = "variable1";

trace(this.my_lv.variable1);
trace(this.my_lv["variable1"]);
trace(this.my_lv[b]);
trace(this["my_lv"]["variable1"]);
trace(this["my_lv"][b]);
trace(this[a]["variable1"]);
trace(this[a][b]);// -------------------注1
trace(my_lv.variable1);
trace(my_lv["variable1"]);
trace(my_lv[b]);

var str = "this.my_lv.variable1";
trace(eval(str));
//trace(eval("this.my_lv.variable1"));// ←このコメントを外すとスクリプトエラー
var tmp1 = "this.my_lv";
trace(eval(tmp1).variable1);
trace(eval(tmp1)["variable1"]);
trace(eval(tmp1)[b]);
var tmp2 = "this";
trace("--");
trace(eval(tmp2).my_lv.variable1);
trace("--");
trace(eval(tmp2)["my_lv"]["variable1"]);
trace(eval(tmp2)[a][b]);// -------------------注2
}


109:103
05/12/27 20:34:59 O1q63UuZ
>>108で書いたやつ、全部通った(出力がすべて2)。

thisをつければいい、という結論ですな。
で、注1や注2みたいな、多段階の変数にして取り扱うのが一番無難じゃないかなと。
eval()は、まあ特に必要ないかもね。

110:Now_loading...774KB
05/12/27 20:36:45 9kx0Jix4
2割くらいしか読んでないけど、
とりあえずスコープの勉強したらいいんじゃね


111:82
05/12/28 05:30:25 Y7Qd0qBM
>>83
あり。

ところで関数から抜け出す exit(); 見たいなのって
ASだとなに?

112:Now_loading...774KB
05/12/28 05:59:09 u83dWrQ1
>>111
多分だけど、「抜け出す」だからgoOut();ジャマイカ?

113:Now_loading...774KB
05/12/28 10:49:26 SLerd0q4
>>111
関数から抜けたいだけなら、returnを活用。
exit()みたいに、完全にPlayerまで落としてしまうような危険なものはない。

114:Now_loading...774KB
05/12/28 12:58:33 LZiC5DtZ
getURL("javascript:window.close()");
これでウィンドウ閉じられるよ
もちろん警告出るけど

115:91
05/12/28 13:10:45 bRITFHxf
>>108 >>109
ありがとうございました。
原因そのものは依然として不明ですが、とりあえず、配列アクセス演算子を使用した手法を用いることで、回避をしたいと思います。

116:Now_loading...774KB
05/12/28 14:32:31 3Vx6d0sh
>>115
evalは、なんか知らないけど上手く動かない時があるよ。
配列アクセスが確実。

117:Now_loading...774KB
05/12/28 16:40:14 dlvmd6kd
おー、なんか豆知識的おばあちゃんなTipsだな。
俺横からだけど検証してくれた人感謝する。

118:Now_loading...774KB
05/12/28 18:12:20 7F4Icg3I

ActionScript初心者です。
次のような配列を作りたいのですが、宣言ってどうやるのでしょう?
また、もっとよいデータの格納方法があったら助言下さい。

top[0].menu[0].title = "top0_menu0";
top[0].menu[0].submenu[0].title ="top0_menu0_submenu0_title";
top[0].menu[0].submenu[0].url ="top0_menu0_submenu0_url_http://";
top[0].menu[0].submenu[1].title ="top0_menu0_submenu1_title";
top[0].menu[0].submenu[1].url ="top0_menu0_submenu1_url_http://";

top[0].menu[1].title = "top0_menu1_title";
top[0].menu[1].url = "top0_menu1_url_http://";

top[0].menu[2].submenu[0].title = "top0_menu2_submenu0_title";
top[0].menu[2].submenu[0].url = "top0_menu2_submenu0_url_http://";
top[0].menu[2].submenu[1].title = "top0_menu2_submenu1_title";
top[0].menu[2].submenu[1].url = "top0_menu2_submenu1_url_http://";


よろしくお願いします。



119:Now_loading...774KB
05/12/28 18:44:14 XO1zpFN1
マニュアル読んでください。
ここで聞くより、正しいことが分かるはずです。。

120:Now_loading...774KB
05/12/28 20:26:39 mYMpeH9T
>>118
オブジェクト指向かなあ

121:Now_loading...774KB
05/12/28 22:00:45 3Vx6d0sh
>>118
人が作ったプロジェクトを修正する事になって、ソースがこれだったら泣くな。

122:Now_loading...774KB
05/12/28 22:28:36 tGlisCRo
>>118
これはまた・・・。119に激しく同意だ、何か本を読んだほうがいい
配列扱う前に基本からじっくり学ぶ事を進める

123:Now_loading...774KB
05/12/29 00:56:00 iLDTtVXY
118です。
ソースは多層に成ってる事を表現したかったので、このまま使うわけではないんです。
3層や4層の入れ子になっているデータって、どのように取り扱うといいんでしょう。
2層まではArrayとObjectつかったものが、本に載ってたんですがそれ以上が見つからなくて。
なんかいい本ありませんか?


124:Now_loading...774KB
05/12/29 00:58:37 ozdQGYKf
>>118
多次元配列とは違うの?


125:Now_loading...774KB
05/12/29 01:15:07 gaLtjZGW
ソフト=FlashMX2004,OS=Win98SE

FlashMX2004で扱えるファイル形式について質問です。
テキスト形式の元ファイル(複数個のTxt:data1.txt,data2.txt,・・・,datax.txt)
を1つにまとめた後、この名前を「txtName」などとして、ボタンアクション
on (press) {
 System.useCodepage = true;
 this.loadVariables(txtName+".txt");
}

で読み込みたく思っています。しかし、元の data1.txt,data2.txt,・・・ を
1つにすると50kBくらいになり、1つのテキスファイルに収まりません(上限が35kB程度)。

仕方なくrtfファイルに纏めようとしましたが、今度はFlashMX2004がrtf形式に
対応してません。
絵柄なしで文字のみのファイルですが、50kB以上でも読み込めるファイル形式は
ありますか? 分割して読み込ませるのは、なるべく避けたいです。


126:Now_loading...774KB
05/12/29 01:27:14 iLDTtVXY
118です。
中身が決まっていない、多次元配列の宣言ってどうやるんでしょう。
ヘルプには
var ticTacToe:Array = [[1,2,3],[4,5,6],[7,8,9]];
というようなのがあるんですが、後から何層になっているか解らない外部データを読み込みたい場合はどうするんでしょう。

127:Now_loading...774KB
05/12/29 01:59:53 ByWEXBKN
ボタンをドラッグできるようにしたくて

on (press) {
this.startDrag ();
}
on (release, releaseOutside) {
this.stopDrag ();
}

と書いたら、背景ごと動いてしまいました。
thisじゃなくてボタンの名前を指定してみたりもしたんですがダメでした。
どうしたらボタンだけ動かせますか?
とんでもなく低レベルなこと聞いて申し訳ありません。
FlashMX・WinME

128:Now_loading...774KB
05/12/29 02:06:48 Wf2f4OH/
>>125
テキストファイルの上限が35kb?そんな訳あるか。
とりあえずloadVariablesじゃなくLoadVars使え。

>>126
オブジェクトを走査して値を取得する
再帰処理の関数作ってforかfor..inでチェックすりゃいい。

>>127
ボタンのままじゃ動かせない。
ボタンをムービークリップにして名前を付ける。
仮にbtn_mcという名前にしたなら、
btn_mc.onPress = function(){ this.startDrag(); }
btn_mc.onRelease = function(){ this.stopDrag(); }
でOK。

129:Now_loading...774KB
05/12/29 02:14:03 ByWEXBKN
>>128
ありがとうございます!ボタンは動かせないんですか・・・。

ちなみに
on (press) { this.startDrag (); }
on (release, releaseOutside) { this.stopDrag (); }
これはどんな時に使うものなのですか?
ムービークリップに書いたら、
マウスイベントはボタンインスタンスでのみ使用できますと出てしまいました。

URLリンク(www.geocities.jp)
ここを見てやってみたのですが・・・

130:Now_loading...774KB
05/12/29 08:31:34 NBrX9drA
>>129
それは古い書き方だな。Flash5の時のだと思う。
もちろんサポートされてるけど、ASも進化してるし、
できたら、128みたいな、フレームワークで最新の書き方を覚えた方がいいよ。

131:Now_loading...774KB
05/12/29 09:34:41 j58wRsQC
>>128
118です。
返答ありがとうございます。

再起処理をした後のデータを多次元に代入したいのですが、その宣言方法がわからないんです。
ActionScriptの多次元配列は使わないほうがいいということでしょうか?
やりたいことは再起処理でムービークリップを子、孫、ひ孫、と複製する方法で解決したのですが、
多次元配列に関することは分からなかったので、ひきつづき質問いたしました。
なにぶん初心者なんで分からない事だらけです。


132:Now_loading...774KB
05/12/29 09:48:02 NBrX9drA
>>131
配列宣言は最初のだけでいいっしょ。あとは、次元増やすごとにnewするだけで。
var aa:Array = new Array();
for (var i = 0; i<10; i++) {
aa[i] = new Array();
for (var j = 0; j<10; j++) {
aa[i][j] = i*100+j;
}
}
trace(aa);


133:Now_loading...774KB
05/12/29 09:51:18 J/+S++i3
>>131
配列の中に配列を作るのが多次元配列。
var array:Array = new Array();
array[0] = new Array();
array[0][0] = "test";
trace("array[0][0] = " + array[0][0]);

>ActionScriptの多次元配列は使わないほうがいいということでしょうか?
ActionScriptに限らず多次元配列を使用するのは
表形式のデータを格納する2次元配列に限定した方がいいよ。(ソースの可読性を上げるため)

3次元4次元になりそうだったら、他の設計を考える。


134:Now_loading...774KB
05/12/29 11:12:59 j58wRsQC
>>132
>>133
ご返答ありがとうございます。ソースまで付けて頂いて感謝いたします。
理解できました。次元を増やそうとする時に宣言し直そうとしていたので、
エラーが出ていたようです。教えて頂いたようにしたら出来ました。

3次元以上になりそうな場合は、設計を考え直したほうがいいんですね。
再考してみます。

重ね重ね丁寧なご返答ありがとうございました。


135:125
05/12/29 14:02:41 AUIJ+vsg
>>128 テキストファイルの上限が35kb?そんな訳あるか。
>>128 とりあえずloadVariablesじゃなくLoadVars使え。

有難うございます。
OSのせいか、30~35kB位になると必ず「メモリーの上限~」というメッセージが
現れ、書き込めなくなるためです。LoadVarsを使ってみます。


136:Now_loading...774KB
05/12/29 14:49:21 Wf2f4OH/
>>135
テキストエディタは何使ってる?
メモ帳使ってるならそれ以外でやってみ。
後、拡張子をtxt以外に変えてみるとか。

var dat = new LoadVars()
dat.load("ファイル名")
dat.onLoad = function(s){
if(s){
trace(dat)
}
}

これで読めるから。

137:Now_loading...774KB
05/12/29 16:23:08 NJQyUx5j
txtをまとめる理由ってあるのかな?DLのため?

138:Now_loading...774KB
05/12/29 17:17:25 b3My24KG
すばやく答えてくださいね。






           童貞ですか?





139:Now_loading...774KB
05/12/29 18:04:45 VKdHKNZW
いえ

140:Now_loading...774KB
05/12/29 18:43:22 EJ2gSVfW
素人は・・・

141:Now_loading...774KB
05/12/29 20:29:29 t3yZXdi2
リスナーについて質問です。
リスナーを学んでいて思った事なのですが
keyon.onKeyDown = function(){
if(Z){
Z処理
}
if(X){
X処理
}
if(Y){
Y処理
}
//Z:Key.getCode==90の省略
}
このような処理の場合、3つ同時に押すとfunction内部の処理が3ループしてる事が分かりました。
読んだサイトでは押した場合に処理するという点で処理が軽くなると記述がありましたが
例えばレーシングゲームのように加速ボタンを押しながら左右キーを押すなど
「何かのキー押しっぱなし+移動操作」のようなものだとfunctionを一度に何度も実行するので処理は増えると思いました
こういったものにはリスナーは向いてないのでしょうか?それともキー個別に指定できたりするのでしょうか?

142:Now_loading...774KB
05/12/29 21:27:39 gousqRHb
押しっぱなしを診たいならonEnterFrameでKey.isDown

143:Now_loading...774KB
05/12/29 22:28:40 t3yZXdi2
>>142
レスどうもです。
しかし要点は「同時押しする場合処理の重複がある点(>>141ですと3つ押しでif判定が9回)から
リスナーの一部をいじると対応できるのか」です。
できない場合はリスナーは向いてないという事になりますね。
リスナーのイベント等を検索して調べてるのですが見つからないため質問しました。

144:Now_loading...774KB
05/12/29 23:53:57 zGGbDclA
>>143
CPUがGHzの時代に数回のifのコストを気にしても意味がないと思いますよ

145:Now_loading...774KB
05/12/30 00:49:51 7u1dOAWx
>>144
確かに気にする程の事ではないですね。
処理を気にして・・・というより何かそういう部分が消したい性分みたいです。
調べても出てこないですし_root["func"+Key.getCode]()なんて謎のやり方思いついたので中身を工夫してみる事にします。
変な質問すいませんでした。

関係ないですが>>144氏のIDが「ギガバイトだから」と読めてちょっと和みました(書き込みはヘルツだけどw

146:Now_loading...774KB
05/12/30 11:03:05 CajElk+4
>>145
Windows自体、keydownでイベントを受け取った後、
押したキーで条件分岐してるし、普通そんなもんなんじゃないの。

147:Now_loading...774KB
05/12/30 12:45:31 DQA12USo
(■∋■)
┳⊂ )  あなたの一票が運命を変える!
[[[[|凵ノ⊃
◎U□◎ =3 キコキコキコ

URLリンク(vote2.ziyu.net)
(■∋■)に投票してください

148:Now_loading...774KB
05/12/30 13:24:03 +r9VgjB6
>>147
見た“トキ”ねーよ・・・!?

149:125&135
05/12/30 23:32:16 ZCQB3Q5m
>>136
Thxです。Txtエディタはメモ帳です。


>>137 txtをまとめる理由ってあるのかな?DLのため?

最終目的は、全Txt中から目的の文字列を検索することです。しかし元Txtの作成上、
複数個のTxtが存在し、1つにまとめた後で検索しようと思ったためです。
。。。。あ~、今気付きましたが、data1.txt,data2.txt,・・・,datax.txt
を1つに纏めなくても、配列やforで順番に検索すればいいのでは?(←自己レス)

とにかくレス有難うございます。


150:Now_loading...774KB
06/01/02 16:46:27 br8ljTDI
ムービークリップBodyがあって、その中にArm,Legがあります。
矢印右キーを押したら"WALK"へ飛んで再生、離すと"STAND"へ飛んで再生、といったように出来るようにしたくて
Arm,Legそれぞれに、

Action=new Object();
 Action.onKeyDown=function(){
  if((Key.getCode()==Key.RIGHT&&_parent.actionMode=="stand"){
   gotoAndPlay("WALK");
   _parent.actionMode="walk";
  }
 }
 Action.onKeyUp=function(){
  if((Key.isDown(Key.RIGHT))==false&&_parent.actionMode!="stand"){
   gotoAndPlay("STAND");
   _parent.actionMode="stand";
  }
 }
Key.addListener(Action);

という風に書いたら、イベントの先にある方しか反応してくれません。
なので、Key.addListener();を1度しか使わずに、かつArm,Legの両方が動くようにするには、どうしたら良いですか?

151:Now_loading...774KB
06/01/02 18:06:49 k9jp02Tz
>>150
リスナーだからそれぞれに書く必要はない。

Action = new Object();
Action.onKeyDown = function() {
if (Key.isDown(Key.RIGHT)) {
_root.gotoAndPlay("walk");
}
};
Action.onKeyUp = function() {
if (Key.getCode() == Key.RIGHT) {
_root.gotoAndPlay("stand");
}
};
Key.addListener(Action);

152:Now_loading...774KB
06/01/03 03:37:33 LlKK8i/a
RPGのマップ移動の処理を作ろうとしているのですが
たとえばBMPのAとBMPのBがあるとします
この二つを横並びに結合したBMPのCをスクリプト側で作成させることは
可能でしょうか

製作にはMXを使用


153:Now_loading...774KB
06/01/03 12:56:31 QQhuWo2a
ステージにcircle_mc1~circle_mc50があり、
その50個全てのmcを_visible = false;したい場合、どのようなスクリプトを書けばよいでしょうか?
よろしくお願いします。

154:Now_loading...774KB
06/01/03 13:03:53 rtx8B/1g
for(var i=1;i<=50;i++) this["circle_mc"+i]._visible = false;

155:Now_loading...774KB
06/01/03 13:15:12 QQhuWo2a
>>154
this[]を使えばいいのですか。
勉強になりました。ありがとうございます。

156:Now_loading...774KB
06/01/03 16:24:13 AR0U2K1B
b90 = 0;
bars = new Object();
bars.onChanged = function() {
if (b90 == 1) {
bar._alpha = 100;
} else {
bar._alpha = 0;
}
trace(b90);
};
b90.addListener(bars);

b90はボタンを押した時1になり、離した時0に戻る変数です
b90は0や1に変化してるのですがb90が変化した時に
とあるMCのアルファ値を変えようとしたのですが何故か内部のtraceが実行されていませんでした
b90は変化してるのですが関数の中が実行されません・・・おかしな点を指摘お願いします

157:Now_loading...774KB
06/01/03 16:53:15 gWQwxXGQ
>>156
変数にaddListenerってあったっけ?

158:Now_loading...774KB
06/01/03 17:25:52 AR0U2K1B
>>157
URLリンク(www.geocities.jp)
こちらのサイト様kazuやkoumokuといったものをaddListenerしているので使えると思ったのですが
何か勘違いしてるのかも。。。

159:Now_loading...774KB
06/01/03 17:57:20 rtx8B/1g
ボタン押したときと離したときにMCのアルファ変えろよ
数字変数にaddListenerメソッドなんて無い

160:Now_loading...774KB
06/01/03 18:09:37 AR0U2K1B
>>159
>数字変数にaddListenerメソッドなんて無い
どうもです
よく読んでる内にテキストフィールドオブジェクトでやると気づきました

>ボタン押したときと離したときにMCのアルファ変えろよ
抜粋と簡略化したものを張ったので実際はボタンだけじゃ無理な内容なんです

回答どうもでした。

161:Now_loading...774KB
06/01/03 19:38:28 /Sy/4VhV
右クリックで開くコンテキストメニューに、独自のメニューを追加しようと考えています。
menuのonSelectで呼び出される関数内では、何フレーム目で右クリックされたのかを判断し、
それに応じてメニュー項目を変化させたいのですが、「いまタイムラインで何フレーム目か」
もしくは「いま何というラベル名の場面を処理しているか」というのは、どうやれば
取得できるのでしょうか?
もちろん、自作の変数に自分で毎フレーム入力していけばいいのはわかりますが、
その機能が最初から備わっているのかどうかを知りたいです。

162:Now_loading...774KB
06/01/03 19:40:41 gWQwxXGQ
>>161
_currentframe

163:161
06/01/03 20:31:52 /Sy/4VhV
>>162
ありがとうございました。

164:Now_loading...774KB
06/01/04 01:37:51 IDl3/zIE
課題=複数のTxtファイルを1つのrtf形式にまとめ、このrtfを
   テキストフィールドに読み込ませるレスNo.125の続き)
ソフト=FlashMX2004,OS=Win98SE

ni.rtfを読み込ませるため、136さんの
var dat = new LoadVars()
dat.load("ファイル名")
dat.onLoad = function(s){
  if(s){
   trace(dat)
  }
}
をフレームアクションで実行したところ、"ファイル名"の書き方によって、
 1) dat.load("ni"); → Error opening URL "file:///C|/WINDOWS/デスクトップ/Flash/ni"
 2) dat.load("ni.rtf"); → %7B%5Crtf1%5Cansi%5・・・
 3) dat.load(ni.rtf); → Error opening URL "file:///C|/WINDOWS/デスクトップ/Flash/"
となってしまいました。この内、2)が読み取っていそうな感じがしますが、
文字化けを回避するにはどうすればいいでしょうか?

また馬場ぎんがさんの「ActionScriptポケットリファレンス」のp161により
ますと、「=,&,%がある場合にはURLエンコードされた文字列を用います」
ということですが、これはあらかじめ元の文字を%26などと書き換える必
要があるということでしょうか?

なお、複数のTxtを1つにまとめようとすると、ある程度のファイルサイズで
「メモリ不足のためこの作業を実行出来ません。いくつかの・・・・」という警告
が出ます。

 以上、よろしくお願います。

165:164
06/01/04 01:40:33 IDl3/zIE
(課題の部分を若干修正)
課題=複数のTxtファイルを1つのrtf形式にまとめ、このrtfを
   テキストフィールドに読み込ませる(レスNo.125の続き) ←括弧を付けました


166:Now_loading...774KB
06/01/04 01:44:06 arXZABwF
lineToなどで描画したグラフィックを部分的に消す方法はありますでしょうか?

四角形の形で消したい。下に他のMovieClipがあるので、背景色で消す方法が
使えません。透明色を使ったらどうか、と思ったのですが、消えませんでした。
丁度、消しゴムツールのような方法がActionScriptにあることを期待
しているのですが…

お願いします。

167:Now_loading...774KB
06/01/04 03:29:22 9LY0K7dd
>>166
明確なやり方はなさそうですが
背景色で消す事とマスクとブレンドを上手く使えばそれらしくできるのでは?

168:Now_loading...774KB
06/01/04 03:30:45 SwB6h2Hp
>>164
文字化けするなら
System.useCodepage = true;
を書く。
URLエンコードされた文字を直す(デコードする)ならunescapeを使う。

>複数のTxtを1つにまとめようとすると・・・
複数のTxtを1つにまとめるって言ってるけど
どういう処理でやってる?
>125では
>1つにまとめた後、この名前を「txtName」などとして
ってあるからFlash内でやってるわけじゃないの?

あと、rtf形式にするのはなぜ?

169:Now_loading...774KB
06/01/04 09:20:04 lKAN5RPW
>>166
Flash8であれば、DrawAPIを使って描画を行ったMCを、アルファチャネルが有効な
BitmapDataにdrawしておく事で、fillRectなりなんなりで、アルファをゼロにした色で
部分的に消すことが可能です。
(BitmapDataを別のMCにattachBitmapして、MCは_visible=falseにするのを忘れずに)

170:Now_loading...774KB
06/01/04 10:22:42 wU/+5hFx
>>164
突っ込み所がいろいろあり過ぎて、何とも言えない。

ソースごとどこかにupしないと、禅問答のように延々と続きそうな気がする。

171:Now_loading...774KB
06/01/04 13:45:34 OJSF7zAg
>>164
「シンタックス my_lv.load(url:String)」
とヘルプに書いてあるだろうが。
なぜ、1) dat.load("ni"); や3) dat.load(ni.rtf); のような実行をするのか?
正しいURLを入れなければ読み込まないのは当然。
勘違いしてるのかもしれんが、URLの書き方と文字化けとは無関係だよ。

課題とは、rtf形式のファイルを読み込まなくてはならないものなのか?
HTMLのタグつきテキストを読み込みたい程度なのか?
何にしてもエラーの件は、作業として根本的に何かが間違っているように思われる。
どうやってテキストをまとめているのか具体的に書いてみたらどうだろう。


172:Now_loading...774KB
06/01/04 16:14:10 gyrBatc/
「FLASH ActionScript 2.0入門完全ガイド+実践サンプル集」
という本を買って勉強してるのですが
どうしても理解できないところがあるので質問させてください

229ページに下のようなクラスがあるのですが
8行目の
book.blObj = new BooksLine(book);
は何故「book.」を付けるのでしょうか?
blObj = new BooksLine(book);
とするべきだと思うのですが
そうするとロールオーバーのイベントが動作しなくなります。

どなたか理解できた方がいらっしゃいましたら教えてください。
よろしくお願いします。


class InitBook {
  var book:MovieClip;
  var blObj:BooksLine;
  //コンストラクタ
  function InitBook(targetMC:MovieClip) {
    book = targetMC;
    //BooksLineクラスのインスタンスを作る
    book.blObj = new BooksLine(book);
    setEventHandler();
  }
  function setEventHandler() {
    book.onRollOver = function() {
      blObj.startSwing("right");
    };

(以下略)

173:172
06/01/04 16:26:10 gyrBatc/
ちなみに
 book.blObj = new BooksLine(book);
の前後で
 trace(blObj);
とすると undefined になるので
 var blObj:BooksLine;
で宣言した「blObj」には格納できていないと思うのですが
 var blObj:BooksLine;
この変数宣言の行をコメントアウトすると
ロールオーバーの
 blObj.startSwing("right");
のとこで「blObj というメソッドはありません」と
エラーになります。

この動作がどうしても理解できません。
これはflashのバグなのでしょうか?

174:Now_loading...774KB
06/01/04 17:12:23 wU/+5hFx
>>172-173
MovieClip.onRollOver内では、scopeが変わる。
InitBookクラス内に以下のスクリプトを追加&変更して実行すると理解できると思う。

//これに変更
function setEventHandler() {
  trace("onRollOver外 this = " + this);
  book.onRollOver = function() {
    trace("onRollOver内 this = " + this);
    blObj.startSwing("right");
  };
}
//InitBookに追加
function toString():String {
  return "InitBook";
}

ただ確かに、book.blObj = new BooksLine(book);
という宣言はあまり例文として好ましくないね。
このやり方よりも、インナーFunctionを覚えた方が良いと思う。

175:172
06/01/04 17:42:13 gyrBatc/
>>174
ありがとうございます

「book」ムービークリップ内に
変数「blObj」を作ってるということでしょうか?

そうだとするとなぜ InitBookクラスで
 var blObj:BooksLine;
この変数宣言が必要なのかが理解できません。

これはFlashのコンパイラを騙すような裏技的なものなのでしょうか?
それともなにか意味があるのでしょうか?




176:Now_loading...774KB
06/01/04 18:14:37 wU/+5hFx
>>175
>「book」ムービークリップ内に
>変数「blObj」を作ってるということでしょうか?
yes

>これはFlashのコンパイラを騙すような裏技的なものなのでしょうか?
>それともなにか意味があるのでしょうか?
このやり方は初めて見たので、よく分からないけど、
もしコンパイラに弾かれるのなら、その1文がコンパイルを通すために必要なのだと思う。

scopeの違いは、インナーfunctionを使用してカバーするのが普通なので、
そのやり方は忘れて、こっちを使用したほうが良いよ。
スレリンク(swf板:429番)

177:Now_loading...774KB
06/01/04 18:19:40 cBI2kdXF
>>175
例としてあげてるのを見る限り、
var blObj:BooksLine;は使用してないね。
その後のコードで使ってるのか、
作者が勘違いしてるんじゃない?

178:Now_loading...774KB
06/01/04 18:21:55 cBI2kdXF
>>175
ああ、わかった、
  function setEventHandler() {
    book.onRollOver = function() {
      blObj.startSwing("right");
    };

この部分でscope無しでblObjを参照してるからだ。
ていうか>>176の言う通りインナーfunctionにした方がいいかも。

179:172
06/01/04 18:34:43 gyrBatc/
>>176-178
さっそく教えていただいた
インナーfunctionを勉強してみます。
ありがとうございました。
おかげですっきりしました。

この本は他にも間違いが多くて
うんざりしてました。


180:Now_loading...774KB
06/01/04 18:59:57 lOAhX7NL
外部jpgの読み込みにつてお願いします。
ムービー開始とともに画像を読み込むように
on (press) {
test_mc.loadMovie("test.jpg");
}
を、単純に
onClipEvent (enterFrame) {
test_mc.loadMovie("test.jpg");
}
にしてみましたがダメでした。スクロールペインを使用するとできるみたいですが、
上記のボタンアクションのような単純なスクリプトでムービー開始とともに外部jpg
を読み込むにはどうすればよいのでしょうか。

181:Now_loading...774KB
06/01/04 19:15:53 TOkSm15I
>>180
_rootにtest_mcがあるなら
test_mc.loadMovie("test.jpg");
と_rootの1フレにベタに書く。


182:Now_loading...774KB
06/01/04 19:40:54 TTHGiJ7+
>>179
AS2.0オンリー本って、今はまだこの本くらいしかないのが痛いところ。

183:180
06/01/04 20:09:27 lOAhX7NL
>>181
フレームアクションなのにスクリプトの書く場所を間違えていました。
超初心者の質問にお答えくださいましてありがとうございました。
お礼申し上げます。

184:164
06/01/04 21:56:04 aBpfPUSV
>>168,170,171
有難うございます。

事の発端は、「複数のTxt(メモ帳)にまたがって語句を検索後、その語句
を含むセンテンスを抽出したい」ということからでした。一番手っ取り早いの
は、Txtの中身をコピペして1つのTxtにした後に、ここから検索しよう思いま
したが、メモ帳の制限が35kB位なのですぐに上限に達します(Txtの総計
は60kBほど)。

そこでrtfならば100kB位は問題ないので、rtfにまとめてここから検索しよう
と思い、上の質問になりました。149で書いたように、Txtに番号を付けて配
列やfor文で順に検索する方法もあるかなと思いましたが、色々なソフトで
生成したファイル( .out や .pdb など←中身は文字のみ)も読み込みたいの
で、ある意味欲張って「何でも読み込めるAS」を構築する練習としてrtfを読
もうとしてます。

最低限、複数のTxtが読めるか、容量制限が大きいTxtエディタの1つ(rtfな
ど1つのみ)が読めればいいです。
 ※171さんの 「シンタックス my_lv.load(url:String)」 でURL指定を試して
 みます。

ソースをUpしたいのですが、初段の「ファイルの読み込み」では、ボタンアク
ションの
on (press) {
 System.useCodepage = true;
 this.loadVariables(txtName+".txt");  ←txtNameはテキストフィールドの変数
}
しか成功していないのでこれ以上のソースはありません。

文字だらけになりすみませんが、アドバイス願います。

185:Now_loading...774KB
06/01/04 22:09:31 Z8ZQigux
既出ならば申し訳ありません。

テキストファイル(A.txt)を読み込んでその中の「##」という文字列を読み込む。

別のテキストファイルに読み込んだ文字列「##」をファイル名に組み込む。
(B_##.txtという感じです)

ファイル名を換えたテキストファイル(B_##.txt)に記載されている文字列を表示する。

ということをしたいのですが、何か良い方法はありますでしょうか。

宜しくお願いします。

186:Now_loading...774KB
06/01/04 22:18:40 wU/+5hFx
>>184
厳しい事を言うようだが、根本的にテクが足りないと思う。
勝手に壁作って、勝手に苦しんでる。

187:Now_loading...774KB
06/01/04 22:40:05 W5j6WT/m
>>184
メモ帳の制限が35KBなのにどうやって100KB位のrtfを作ったのかが疑問。
っていうかメモ帳の制限が35KBってのがよくわからない。
Win98ってそういうものなの?

で、話は変わってFlashでもrtf形式は読込める
System.useCodepage = true;
var dat = new LoadVars();
dat.onLoad = function(s) {
if (s) {
trace(unescape(dat));
}
};
dat.load("ni.rtf");

188:Now_loading...774KB
06/01/04 22:43:15 W5j6WT/m
>>185
やりたいことがよくわからないが、ASで
ファイルを保存したり、ファイル名を変えるのは不可能。
テキストファイルを読み込みたいなら>>187みたいな感じ。

189:185
06/01/04 22:52:01 Z8ZQigux
>>188
レスありがとうございます。
読み込むテキストファイル(上の例で言うとB_##.txt)のファイル名を擬似的に動的に指定したいと考えたんですが・・・
ファイル名を変えるというかファイルを指定するパスを他のテキストファイルを用いて指定するイメージなのですが・・・
やっぱり無理でしょうか・・・

190:Now_loading...774KB
06/01/04 22:53:06 wit74IG7
JavaScriptとJScript連携でFileSystemObjectでファイル操作できそうじゃね?

191:Now_loading...774KB
06/01/04 23:09:20 hxPgdGWk
>>184
基礎知識が不足しすぎ。正直、いまの貴方はFlash初心者とかActionScript初心者とかじゃなくて、
PC初心者レベル。アドバイスは「もっとパソコンに慣れましょう」としか言えん。

>>185
説明が下手。何言ってるのかさっぱりわからん。
が、>>189でまぁなんとなくわかった。とりあえず、読み込むファイル名を動的に指定するのは可能。
文字列操作をいろいろやってればできる。
URLリンク(www.game3rd.com)
このへんを読んで勉強しな。

>>187
Win95のころVC++を触ってたとき、OS標準で用意されているテキストエリアの
メモリ制限が64kbだったのは記憶にある。「あー、だからメモ帳も64kb制限なんだ」と
当時は思ったもんだ。なんでいま35kbとか言ってるのかは、さっぱりわからん。
URLリンク(ja.wikipedia.org)

192:Now_loading...774KB
06/01/04 23:17:13 D2T412B3
>>151
レス有り難うございます。
まだいまいち良くわからないですが、自分でやってみます。

193:185
06/01/04 23:22:59 Z8ZQigux
>>191
ありがとうございました。
勉強します。

194:184
06/01/05 00:08:10 5KaMKK19
>>187, 191
レスどうも。
メモ帳のエラーメッセージは、(Win98SEをお持ちの方は)適当に文章をコピペして
頂けたら再現できます(当方のメモリーは256MB)。

つーか、メモ帳自体が意外とメモリーを喰っていて、IEのウインドウを1個追加
するよりもメモ帳を開いた方が断然凍る確率が高いです →これ以上はWin板の
話題なのでメモ帳云々のことはここまでにします。


195:Now_loading...774KB
06/01/05 00:15:11 84qMbqFc
>>194
ていうか、メモ帳以外を使えばって前のレスで言われてるじゃん。
あえて言えば、そのスペックでMX2004を使うのが間違い。

196:184
06/01/05 00:33:11 5KaMKK19
>>195
WordPadとかですか? WordPadは別ソフト専用にしているので
出来るだけ使いたくないです。


197:Now_loading...774KB
06/01/05 00:49:21 lftfokV2
>>196
別ソフト専用ってナニ?
WordPadってソフト別に使うものじゃないと思うけど、違う?
100KBのrtfはどうやって作った?

198:Now_loading...774KB
06/01/05 01:14:03 bU39DVHW
もうなんつぅか、メモ帳からいい加減はなれろっつーか、
メモリの問題じゃなくて実はHDDの空きが10M以下とか
そんなレベルじゃないのかという気がしてくる。

>>184
お前さんの創作意欲はとりあえず1年ほど封印して、
しばらくいろんなサイトでエロ動画でもDLしてたら?
エロへの情熱でアレコレやってる間に基礎知識が
溜まってくと思うぞ。

199:Now_loading...774KB
06/01/05 01:15:39 DFg+N3us
>>196
URLリンク(www.forest.impress.co.jp)
色んなテキストエディタがあるから試してみ。
メモ帳より様々な面で便利だよ。

とりあえずメモ帳以外での保存を試さないうちは次の質問は無しね。

200:184
06/01/05 01:29:06 MBMk1BiJ
>>197 別ソフト専用ってナニ?
分子軌道計算の入力データ作製用です。「この種データを開くときには必ずこの
ソフトを使う」で設定し、アイコン自体はWordPadそのものではありますが、拡張子
自体が違います。非常にデリケートな作業なので、ソフト自体を専用にしています。


>100KBのrtfはどうやって作った?
184の「そこでrtfならば100kB位は問題ないので」の通り、別に100kBを目指
した 訳ではなく、例えると「ビニール袋では入らないからバケツに入れた」程度
の ことです。


>>199
見てみます。


-- 「次の質問は無しね。」ということですが、現状報告 --
ni.rtfを読み込ませるため、136さんの "ファイル名"でURLを指定して読み
込ませたいのですが、URLの表現が
C|/WINDOWS/デスクトップ/Flash/ni.rtf
でも
C:\WINDOWS\デスクトップ\Flash\ni.rtf
でもエラーになります。

187さんの方では読み込めますが、文字化けします。文中に「=」や「&」が入って
いたら 不可なのでしょうか?


201:184
06/01/05 02:09:15 g7JO45gX
199さんのサイトの内、TeraPadをインストールし、試しに66kB(=33x2)ほどの
テキストを作成し、保存に成功しました。
しかし開く際には、「ファイルが大きすぎてメモ帳では開けません。ワードパッド
で開きますか?」ということなので、(チェック用に)ワードパッドを使用し、内容
を確認しました。
とにかくメモ帳よりも大きなサイズが扱えるので、コレで一まとめにしておきます。

サイト紹介有難うございます。


202:Now_loading...774KB
06/01/05 02:16:21 h53DvniE
>>184
解決したみたいだけど一応補足させてくれ。

rtf(リッチテキスト形式)には、プレーンなテキスト以外の情報も含まれている。

>>164の2)の結果は文字化けじゃなくて、そのテキスト以外の情報を読み込んだ結果。
つまりrtfのヘッダ情報、 「{\rtf1\ans・・・・」の部分。{ が%7B、\ が%5Cな。
ためしにワードパッドで2~3文字程度のrtfファイルを作ってメモ帳で見てみること。

loadVarsはファイルの解析なんてしてくれないから、ヘッダ情報だろうが本文だろうがテキストだろうがバリナリだろうが関係なく読み込む。
自分でrtfのフォーマットを解析できないのなら不用意に使わないこと。



203:Now_loading...774KB
06/01/05 02:18:17 ESBcDz67
質問させてください。
あるボタンインスタンスのon(press){・・・}に書き込んだスクリプトを
そのボタンを押さずに、よそのインスタンス/フレームのスクリプトから呼び出したいケースがあるのですが
どのように処理できるでしょうか?
btn.onPress=function(){・・・}でつくったものはbtn.onPress()で呼び出せるのはわかったのですが
on(press){・・・}の場合の呼び出し方がわかりません。
OSはXPでFLASH8を使っています。

204:184
06/01/05 02:40:03 g7JO45gX
>>202
懇切なアドバイス有難うございます。

蛇足ですが「TeraPad」では、入力欄に常に[EOF]が表示されます。。。。。
EOFという言葉は昔大学の必修でCをやって以来ですうw ←使用上は無問題です


205:Now_loading...774KB
06/01/05 04:52:43 JovfgGyE
>>203
たぶん無理。フレームワークで統一する。ボタンはMCにする。
この方が楽だよ。
>>204
ワードパッドはワープロだから、デフォルトで*.rtfとして保存される。
つまり、よけいな情報が付加されてしまうので保存の時にプレーンテキストで保存する。
EOF表示はエディタ個々の設定でしょ。

206:Now_loading...774KB
06/01/05 05:25:37 uhuspprV
なんだかんだ言っておまいら優しいな

207:Now_loading...774KB
06/01/05 08:06:03 DFg+N3us
>>204
EOFはデータ上には含まれていないから大丈夫。
単にデータの終端を示す為にエディタ上に表示されているだけ。

んで、>>201でメモ帳で開けないと書いてあるけど、
メモ帳の変わりにこういうエディタを使うようにして。
メモ帳の使用感が好きならメモ帳Plusとかでも何でも良いから。

例えば.txtはTeraPadで開くように、とかね。

208:Now_loading...774KB
06/01/05 10:38:12 nyuBUIJw
初心者歓迎パソコン教室みたいになってるな。

209:203
06/01/05 11:47:17 ESBcDz67
>>205
回答サンクスです。
無理ですか。残念です。
こまめにフレームに飛ばして処理したほうがいいのですね。
参考になりました。


210:Now_loading...774KB
06/01/05 12:01:15 OTD9Its0
PV系のFlashでよく使われている、複数の
長方形のMCを上下移動させる方法を
Actionscriptで記述するとどうなりますか?
モーショントゥイーンでやっていたのですが
面倒なのでどなたかご教授お願いします。

OSはXP SP2 Flash MXです。


211:Now_loading...774KB
06/01/05 12:10:48 t4Z+Ukv5
>>210
>PV系のFlashでよく使われている
知らないけど、MCを上下移動させる方法は、
this.onEnterFrame = function(){MC._y += 1;}
とか。

212:Now_loading...774KB
06/01/05 12:31:21 nyuBUIJw
>>210
MX2004以上なら、
mx.transitions.Tweenクラスというのが用意されている。


213:Now_loading...774KB
06/01/05 12:42:05 09oXVr3x
>>210
二次関数のような動きをしたいとか特殊な動きをする、またはよっぽど単純な動作のみの場合じゃないとPVをASで書くのはお勧めしないな
いちいち動作確認にパブリッシュしなきゃいけないのも面倒だしね

一応作り方としては
1.まずムービークリップインスタンス(mc)を作り、リンケージ設定で書き出す
2.そのMCの中でインスタンスの動作をモーショントゥイーンで作る
3.横一直線に8個並べたい場合
for(i=0;i<8;i++){
mc_name = "mc"+i
attachMovie("mc",mc_name,100+i);
_root[mc_name]._x = i*50;
_root[mc_name]._y = 50;
}
こんな感じになる
ある程度ASの基礎勉強しなきゃ分からんと思いますがやるなら頑張ってください

214:Now_loading...774KB
06/01/05 12:43:02 OTD9Its0
>>211-212
ありがとうございます。


215:Now_loading...774KB
06/01/05 12:45:49 OTD9Its0
>>213
なるほど…マスクやトゥイーンがよく使われているのも
そういう理由でですか…。勉強になりました。

216:Now_loading...774KB
06/01/05 15:53:10 cB4SAZv9
ASからcreateEmptyMovieClipで作ったMCの基準点を操作するのって無理?

217:Now_loading...774KB
06/01/05 16:46:58 mZ3lVaEN
調べてもよくわからなかったんですが、
ある変数の中身が変更されたときに1度だけ実行されるリスナーってありますか?

無ければ、そのようにする方法を教えて貰えないでしょうか?

218:Now_loading...774KB
06/01/05 16:49:40 nyuBUIJw
別にリスナーにしなくても、setter作って、setter内で任意の処理を実行すればいいんじゃない?

219:Now_loading...774KB
06/01/05 17:57:28 ESBcDz67
質問です。
あるMC【A】の子として、インスタンス【B】を作った場合(→MC【A】.attachMovie("らいぶらり",インスタンス【B】,1))
MC【A】もインスタンス【B】も消したい場合は、removeMovieClip(MC【A】)を行えば、
インスタンス【B】も一緒に消えてremoveMovieClip(インスタンス【B】)を行う必要はないのでしょうか?
OSはXP、FLASHは8です。

220:Now_loading...774KB
06/01/05 18:24:56 t4Z+Ukv5
>>219
this.attachMovie("mca", "MC_A", 100);
this.MC_A.attachMovie("mcb", "MC_B", 200);

trace(this.MC_A.MC_B);

removeMovieClip(this.MC_A);

trace(this.MC_A.MC_B);

結果
_level0.MC_A.MC_B
undefined

ということかな?
消えてるよ。

221:Now_loading...774KB
06/01/05 18:35:00 ESBcDz67
>>220
回答ありがとう。
なんとなく消える気はしていたのだけれど、確証が持てなくて;
変に残ってメモリ喰ってたらやだな、なんて思ってました。


222:184
06/01/05 23:29:52 0sYz/Dkj
>>205, 207
エディタへのアドバイス有難うございます。


223:Now_loading...774KB
06/01/06 10:18:38 BbYnzH9I
function loadMap(){
  var myTxt:TextField;

  myTxt = new TextField();
  loadVariables ("test.txt",myTxt.text);
  trace( myTxt.text);
}

テキストフィールドmyTxtに外部ファイルtest.txtを
読み込みする処理をしたいのですが
トレース結果はundefinedになってしまいます。
お助けください。


224:Now_loading...774KB
06/01/06 11:11:26 GetRccpB
>>223
traceを少し時間差つけて実行してもundefinedになる?
読み込みを実行した直後にtraceすると読み込みが完了してなくてそうなる時がある

225:Now_loading...774KB
06/01/06 11:27:19 YF0CotYg
>>223
AS2.0は知らないから1.0と折衷になってるけど読み解いてくれ。

//TEXTSTRINGは読み込むテキストに書かれている変数
function loadMap(TEXTSTRING) {
var myTxt:TextField;
myTxt = new TextField();
myTxt.text = TEXTSTRING;
trace(myTxt.text);
}
this.onEnterFrame = function() {
this.loadVariables("test.txt");
if (TEXTSTRING != undefined) {
loadMap(TEXTSTRING);
delete this.onEnterFrame;
}
};

226:Now_loading...774KB
06/01/06 12:38:07 fjaiCRLp
loadVariablesは、昔の名残なので使わん方がいいよ。

227:Now_loading...774KB
06/01/06 13:29:04 TEr3aVzT

ダイナミックテキストA - スクロールバー(UIScrollBar) - ダイナミックテキストB

のように配置しています。中央のスクロールバーはAに吸着させています。
スクロールバーを操作したらBも同時にスクロールさせたいので、

function SameLine(){
 b.scroll = a.scroll;
};

mouse_obj.onMouseDown = SameLine;
mouse_obj.onMouseMove = SameLine;
mouse_obj.onMouseUp = SameLine;

のようにしたのですが、Bの反応が1フレーム遅れてしまいます。
同時に動かすようにするためには、どういうふうにSameLine()を呼び出すように
設定すればいいのでしょうか?


228:Now_loading...774KB
06/01/06 13:31:27 TEr3aVzT
あ、気になったのでついでに。

>>226
loadVariablesが昔の名残なら、その代わりに使うべきものってなんなんですか?
LoadVars クラス?

229:223
06/01/06 13:55:09 BbYnzH9I
レスしてくれた皆さんありがとうございます。
しかし残念ながら上手くはいきませんでした。

そもそもテキストフィールドオブジェクトに入れた値を
traceで確認する方法ってどうやるんですか

myTxt.text="aaa";
trace(myTxt.text);

ってやってもundefinedになりますし


230:Now_loading...774KB
06/01/06 14:23:07 GetRccpB
>>229
myTxt = new String()
って入れたらできるかも?

231:227
06/01/06 14:23:22 TEr3aVzT
自己解決しました。
デバッガ見てたらAに吸着してたUIScrollBarが a.vScrollerとして取得できるっぽかったので、

scroll_obj = new Object();
scroll_obj.scroll = function(eventObject){
 b.scroll = a.scroll;
}
a.vScroller.addEventListener("scroll", scroll_obj)

として、UIScrollBarのスクロールタイミングに処理することで解決しました。

232:Now_loading...774KB
06/01/06 14:44:48 FMZUlK4A
createTextField

233:Now_loading...774KB
06/01/06 17:19:37 NHfTwyXu
質問お願いします。

子SWFなどの読み込み待ちには MovieClipLoader を使えると思いますが
メインSWFの読み込み待ちの場合、このようなものを使って
読み込み終了時にイベントを発生させるようなことはできないでしょうか?

getBytesLoadedとgetBytesLoaded を判定して
ループで待つのでしょうか?

234:Now_loading...774KB
06/01/06 19:48:41 5kFlqYfl
>>229
それまんまコピーしてうまくtrace出来たよ。5だけど。

235:Now_loading...774KB
06/01/06 21:57:39 3x9cVbWq
ステージにテキストボックス(長方形で20文字×8文字くらいの大きさ)を配置して
ASで文章を1文字ずつ表示させているのですが(ドラクエの会話ウィンドウのような感じ。enterframeでreplaceSelを呼び出して1文字ずつ送り込んでいます)
テキストボックスの中で文字が自動で折り返す際に、折り返し端の文字がテキストボックスの境界をまたいだ位置に表示されようとすると
一瞬、境界をまたいでテキストボックスからはみ出た位置に表示されてから、折り返して下の行の先頭にワープします。
これがとても気になるので、テキストボックスからはみ出て表示されない方法はあるでしょうか?
はみ出る位置の文字がはみ出て表示される前に下の行に移って欲しいのです。

236:Now_loading...774KB
06/01/06 22:09:38 kVUGiOdG
>>223
そもそもloadVariablesの使い方間違っていると思うのだが。


237:Now_loading...774KB
06/01/06 22:22:47 kVUGiOdG
>>223
text.txtの中身がどうなっているのか解らないが、まるごと読み込むものと判断するとこんな感じだろうか?

_root.myTxt = new TextField();
_root.load_lv = new loadVars();

_root.load_lv.onData( txt ) {
  _root.myTxt.text = txt;
}

_root.load_lv.load("text.txt");

試してないから動かないかも。


loadVarsもloadVariablesも読み込むまで処理を待ってくれないから、読み込み終了をちゃんと判断する必要がある。
loadVarsならonLoad() かonData()
loadVariablesならonClipEvent( data )


238:Now_loading...774KB
06/01/06 23:29:24 k/MXoRO8
>>218
setterですか…。よくわからないので調べてみます。
ありがとうございました。

239:Now_loading...774KB
06/01/07 00:35:53 JAK0NpMb
TextFieldってnewでなく、createTextFieldを使うと思うんだが。
AS3とかではそうなってるのかな。
JavaとASをごっちゃにしてる気がするぞ。

240:Now_loading...774KB
06/01/07 03:28:59 p44MVeRG
質問ですー。
this.removeMovieClip() と removeMovieClip(this) って同じことですか?

241:Now_loading...774KB
06/01/07 03:46:31 TtNDrc2t
すいません、教えてください。WinXP,FlashMX2004,AS2.0です。
次のようなクラスをつくってで
var HogeHoge = new HogeHoge
HogeHoge.LoadPicture('test.jpg');
と叩いた場合、画像は読み込めるのですが、_widthプロパティが0になってしまいます。
これはどういった原因なんでしょうか。
お願いします。

class HogeHoge {

var a_mc;

function LoadPicture(imgPath:String){

this.a_mc = _root.createEmptyMovieClip('a_mc',1);

var pic_obj:MovieClipLoader = new MovieClipLoader();
var oListener:Object = new Object();

oListener.onLoadComplete = callbackOnLoad();

pic_obj.addListener(oListener);

pic_obj.loadClip(imgPath,_root.pic_mc);
}

private function callbackOnLoad() {
trace(this.a_mc._widht);
}
}



242:Now_loading...774KB
06/01/07 08:54:43 iKXlkYLG
onEnterFrame で trace してみれば分かる。
_root.pic_mc //どこから出てきたのこれ
trace(this.a_mc._widht); //スペルミス

243:Now_loading...774KB
06/01/07 11:11:35 HJOTWsNn
>>235
ちょうど俺もその処理をやろうと思ってたところなのでアドバイス。
例えば「ゲームを買った」のような文章で、

>ゲームを買

>ゲームを
>買っ

みたいになる現象だろ?
上の時点では textFidld.text = "ゲームを買" となってて、
下の時点では textFidld.text = "ゲームを買っ" となってる状態から
textFieldに改行判断をさせてるわけだから、そりゃこういう風になるのも当然だ。
対策は、自前で改行の判断することだと思う。
文字列の長さを判断して、自分で改行位置に"\n"を入れる。
"ゲームを買った" を送り込むんじゃなくて、 "ゲームを\n買った" を送り込む。
これで解決。だと思う。

244:235
06/01/07 11:22:47 p44MVeRG
>>243
そそそ。そうなっちゃうの。
でもそっかーやっぱ元の文章を変えたほうがてっとりばやいのねー。
サンクス!

245:Now_loading...774KB
06/01/07 11:38:28 HJOTWsNn
>>244
てっとりばやいんじゃなくて、もっとtextFieldの立場になって考えてみそ。
自分がtextFieldの作者のつもりで。
元のやり方でデータ渡されて、そんな改行が出来るわけねーだろボケ!
と愚痴たれたくなるから。

246:Now_loading...774KB
06/01/07 13:40:09 iCWVHrvd
XP、MX2004です。
スロットゲームをイメージしてください。
3つのMCを、それぞれ任意のフレームで停止させました。
3つとも停止させた時に、3つとも同じフレーム番号で止まっていたら
(絵柄が揃ったら)メインのフレームが次に進む。
if(_root.hidari._currentframe == _root.naka._currentframe == _root.migi._currentframe == 1){
    gotoAndStop(5);                                     ~~
} else {
    stop();
}
これはちゃんと動くのですが、1行目最後の ==1 を ==5 などの1以外の数字にすると
MCをすべて「5」で止めてもメインのフレームが進みません。
理由がわからないので助けてください。
ちなみに、ひとつずつ止めれば
if(_root.migi._currentframe == 5){
    gotoAndStop(5);
} else {
    stop();
}
これならメインフレームが進みます。

247:Now_loading...774KB
06/01/07 13:58:06 gV6uK7bh
>>245
いや、ちゃんとスクリプト的に(てっとりばやくなく)やるには追加した文字のフォント幅を加算してみて
もう入らなくなったところで改行挿入、とかかなって思ってたからさ。
むしろ言われて「てにをは&句読点」に合わせて改行されていたのに気付いた次第。

248:Now_loading...774KB
06/01/07 14:04:43 JAK0NpMb
>>246
if文の()の中身はtrueかfalseしかない。
1はtrueと見なされるから一応動いたんでしょ。
○○かつ○○の条件判定は&&でつなぐかifの入れ子にする。

249:Now_loading...774KB
06/01/07 14:11:10 DS+YoU9d
論理積でやってみれ
if((_root.hidari._currentframe&_root.naka._currentframe&_root.migi._currentframe) == 5)
説明はめんどくさいから自分で調べて

250:246
06/01/07 15:10:36 iCWVHrvd
ありがとうございます。 =ではなく、&でつなげるのですね。
if((_root.hidari._currentframe & _root.naka._currentframe & _root.migi._currentframe) == 1){
    gotoAndStop(5);
}
if((_root.hidari._currentframe & _root.naka._currentframe & _root.migi._currentframe) == 5){
    gotoAndStop(6);
}
if((_root.hidari._currentframe & _root.naka._currentframe & _root.migi._currentframe) == 9){
    gotoAndStop(7);
} else {
    stop();
}
ところが、これで絵柄が揃ってない状態でも、フレーム5に飛んじゃうようになりました。
何がおかしいんでしょうか?

251:Now_loading...774KB
06/01/07 15:21:34 wXCNMlFR
>>250
全部の演算子の意味覚えて来い
多くないから。

252:Now_loading...774KB
06/01/07 15:21:57 n8FqW4Px
0001 & 0101 = 0001
>>248のやりかたでやってみ

253:246
06/01/07 15:26:06 iCWVHrvd
すいません、出直してきます。

254:Now_loading...774KB
06/01/07 15:26:45 Dfvp1Cax
>>246
比較演算子の使い方が違う。
a == b == c なんて書くと、こんな感じに処理される。
( a == b ) == c

まず( a == b ) の値は、式が成り立つのならtrue、 成り立たなければfalseとなる。
trueとして展開すると、 true == c となる。
結果、c が true と等しいか判断されることになる。

で、ASではtrue が 1なんだろうな。 だから true == 1 は成り立つけど true == 5 は成り立たなくなる。

255:Now_loading...774KB
06/01/07 15:27:22 DS+YoU9d
あーそうか、じゃあ
if((_root.hidari._currentframe<<2+_root.naka._currentframe<<1+_root.migi._currentframe) == (5<<2+5<1+5))
でもこれ無駄に計算多いかもな。
原因はちょっと違うけどだいたい>>248の言うとおりだから、めんどくさがらずに
ひとつずつ比較するのが早いかもなー

256:Now_loading...774KB
06/01/07 15:32:04 BI9IzZnP
>>246
まず、3つが同じかどうかのifでくくって、
その中でどこに飛ぶかの処理をやる方がすっきりするんじゃないのかな?

257:Now_loading...774KB
06/01/07 15:34:40 DS+YoU9d
お、書いてるうちに山ほどレスが。
そうそう、(A==b==c)っていう書き方は((a==b)==c)として計算されるのよ。
代入の(A=B=C=5)みたいにまとめて演算してくれないのな
(つーか、実はこれもちょっとASだと困った処理なのだけれども。というか、行儀悪い書き方なのんだけど)
だから、なんか変だと思ったら、こまかーくひとつひとつ計算してみるのがいいよ。特にASではね。

258:Now_loading...774KB
06/01/07 15:43:58 DS+YoU9d
で、どーすれば楽かっていったらさ、うーん、こんなのどーよ?
a=_root.hidari._currentframe
b=_root.naka._currentframe
c=_root.migi._currentframe
if(a==b&&b==c){
 _root.gotoAndStop((a+b+c)/3)
}
なんか頭悪そうだけど、まあいけるんじゃない?

259:Now_loading...774KB
06/01/07 15:56:13 Dfvp1Cax
>>258
a も b も c も等しいことが解っているんだから
_root.gotoAndStop(a)でいいんじゃね?


260:Now_loading...774KB
06/01/07 16:02:18 DS+YoU9d
お、そうだね。そのほうが妥当だ。さんきゅー。

261:Now_loading...774KB
06/01/07 16:11:59 HJOTWsNn
>>246はもっと演算子について勉強しておくとして、とりあえず>>250みたいな処理のベスト解答。
>>258からの発展系で書いた。

var jumpTable = new Array();
jumpTable[1] = 5;// 1なら5にとぶってことだ。
jumpTable[5] = 6;
jumpTable[9] =7;

a=_root.hidari._currentframe
b=_root.naka._currentframe
c=_root.migi._currentframe
if(a==b&&b==c){

  label = jumpTable[a];
  if (label != undefined){
    gotoAndStop(label);
  } else {
    stop();
  }
}

aに入ってる数字と飛ぶフレーム数が一致するわけじゃないみたいなので、これがベストだろう。
こうやって置けば、「○○なら△△にとぶ」っていう分岐がどれだけ増えても、
テーブルに入れておく数が増えるだけなので、処理が楽。

262:Now_loading...774KB
06/01/07 16:26:13 DS+YoU9d
なんだよその説教系の書き込みはwww
別にどーでもいいじゃんうごけば。説教はぎじゅつこうかんすれででもやってくれ。
つーか「ベスト」なんて軽く書き込めちゃうお前がうらやましー。

で、本題
ASの配列(Array)は割と重いので、使わなくてもいいんじゃない??
単にラベル名にとばすだけでもいい感じ。Flashに慣れてないとわかりにくいかもしれんけど。
(つーか、個人的には>>>261のが奇麗とか思ったけどさ)

っつーわけでさ、難しく考えなくても「どっかのスロットが揃えば」っていう処理でも、
いろいろ考えはあるわけさ。

好きなの使って、面白いもん作ってくれー。

263:Now_loading...774KB
06/01/07 16:27:32 JAK0NpMb
暗号のようなベストだな。

264:Now_loading...774KB
06/01/07 16:31:25 Dfvp1Cax
まあまあ。
思ったとおりに動いて面白い物が出来たらそれでいいじゃん。

>>246がんばれよー

265:Now_loading...774KB
06/01/07 16:31:33 DS+YoU9d
>>263
まあ、そう言うな。
ASの世界は未だに混沌なのさ。
それだけに面白いよ。お前も飛び込めよフゥハハアアアア!!

266:246
06/01/07 16:43:44 iCWVHrvd
みなさん、ありがとうございます。
a = _root.hidari._currentframe;
b = _root.naka._currentframe;
c = _root.migi._currentframe;
if (a == b && b == c && c == 1) {
    gotoAndStop(5);
}
if (a == b && b == c && c == 5) {
    gotoAndStop(6);
}
if (a == b && b == c && c == 9) {
    gotoAndStop(7);
} else {
    stop();
}
とりあえずこれで行けそうです。本当にありがとうございました。

私も、もっと基本的なことを勉強しとかないといけませんね・・・

267:Now_loading...774KB
06/01/07 17:15:09 JAK0NpMb
同じif文を複数つなげるのは勧めできないよ。
修正するときにその数だけ直さなきゃいけなくなるし、よみずらいし
なおしそこねたりするからね。

var t_num:Number = 0;
if ((a == b) && (b == c)) {
t_num=a;
}

switch(t_num){
case 1: gotoAndPlay("1atari");break;
case 5: gotoAndPlay("5atari");break;
case 9: gotoAndPlay("9atari");break;
default:gotoAndPlay("continue");
}


268:Now_loading...774KB
06/01/07 18:01:09 n8FqW4Px
>>266
if (a == 1 && b == 1 && c == 1) {
 gotoAndStop(5);
} else if (a == 5 && b == 5 && c == 5) {
 gotoAndStop(6);
} else if (a == 9 && b == 9 && c == 9) {
 gotoAndStop(7);
} else {
 stop();
}
自分なら単純にこうかくかなあ、数値は定数にするかも知れんけど

ifの方が柔軟に使えるからね
例えばチェリーみたいな小役の処理をいれたい時も変更が楽だから

269:Now_loading...774KB
06/01/07 19:55:47 jV7z2T6d
_rootのタイムライン上に、

var my_key = new Object();
my_key.onKeyDown = function(){
  trace("hoge");
};
Key.addListener(my_key);

と書いて、trace("hoge")のところでブレークポイントを置いて
ここを通ると、

*** セキュリティ Sandbox 違反 ***
SecurityDomain 'file:///(中略).swf' が Player の UI コンテキストにアクセスを試みました。

っていうのが出る。ブレークポイントを置いてないと出ない。
この出力が出ようと出まいと、hogeが出力される(=動作にはまったく支障はない)。

これってほっといてもいいのかな?
いま製作中のやつではこの違反が出るけど、確認のための最小セットでは
この違反が出ないから気になるんだけど。

270:241
06/01/08 00:23:54 /gHDdHkD
>242
ありがとうございます。

>_root.pic_mc //どこから出てきたのこれ
すいませんs_mcです。。。
>trace(this.a_mc._widht); //スペルミス
あぁ・・ごめんなさい。。。

読み込みが済んでいないために0が返されるということでよろしいでしょうか。
この場合、onLoadCompleteが機能していないということなんでしょうか。

271:Now_loading...774KB
06/01/08 02:52:08 nbBGBdhC
物体を乱数を利用することによって上下左右に自動で移動させようしています。
いろいろ試しましたが、全く動かなかったり、一方向にしか進まなくなったりします。
宜しくお願いします。

onClipEvent (enterFrame) {
_root.si = Math.floor(Math.random() * 3);
if (si ==0 ) {
_y += 1;
} else if (si ==1 ) {
_y -= 1;
} else if (si ==2 ) {
_x += 1;
} else if (si ==3 ) {
_x -= 1;
}

}

272:Now_loading...774KB
06/01/08 03:06:36 KJRrS+v4
>>271
とりあえずMath.random()の戻り値は0以上1未満な。
つまり、0,1,2,3の4種類をランダムに出したいなら、
Math.floor(Math.random() * 4);

273:Now_loading...774KB
06/01/08 03:09:50 m8VKhZtU
>>271
siのパスがあってないんじゃないのかな。

274:Now_loading...774KB
06/01/08 03:37:33 9/Udlts0 BE:35239542-
>>246
動作確認してないけどこうやってスクリプトにしとけば
配列にデータをぶち込むだけでいくらでもパターンをふやせるよ。

data = [
// 1枚目,2枚目,3枚目,そろっていたときに飛ぶ番号
[1,1,1,5],
[5,5,5,6],
[9,9,9,7]
];

var i;
var len = data.length;
for(i=0;i<len;i++){
if(_root.hidari._currentframe != data[i][0]) continue;
else if(_root.hidari._currentframe != data[i][1]) continue;
else if(_root.hidari._currentframe != data[i][2]) continue;
gotoAndStop(data[i][3]);
}

275:Now_loading...774KB
06/01/08 04:00:00 9/Udlts0 BE:118932293-
>>272
1.0も入ってるよ。
確率的に絶対にでないけどな

276:Now_loading...774KB
06/01/08 04:08:11 KyMr7udt
>>275
1.0は入ってねえよって件のURL張って、ひとつのネタだよな?

277:Now_loading...774KB
06/01/08 04:38:04 KJRrS+v4
>>275
ありゃ、レスがw
サイコロ100個投げたときに角々で連なって直立するようなもんだなw
レスついでだけど、
for(var i=0;i<data.length;i++){...}
がスタンダードだし、continueならelseはいらないな。
ぱっと見て解りやすいコードを書く方がみんなも見やすいし良いと思うぞ。

278:Now_loading...774KB
06/01/08 10:03:23 cCa2ucSU
>>275
それ、ヘルプファイルの表記ミスだったよ。

279:Now_loading...774KB
06/01/08 15:19:37 9/Udlts0 BE:26429832-
>>277
data.length
終了判定にこんなプロパティチェックもってきたら
処理1.5倍はおもくなるぞ。
…と某リファレンスに乗っておりました。

>>278
まじすか?ソースはヘルプなもんで


280:Now_loading...774KB
06/01/08 15:31:51 /JcSsHpp
>>279
その1.5倍ってのはどこから出てきたんだ?

気になったので、うちの環境で試してみたら1.15倍にしかならなかった。
100回転位だと、気にするコストじゃない。

ただ、100,000回くらい回すなら、ローカル変数にしたほうがいいかも。

281:277
06/01/08 15:34:21 KJRrS+v4
>>279
staticでしょ?以前に、10万回ほどのif文ループでチェックしたけど、ほとんど差がないので、
読みやすい方を使ってる。1.5倍も差が出たらさすがに使わんよw

282:Now_loading...774KB
06/01/08 15:35:45 9/Udlts0 BE:92503837-
>>280-281
そうか。まあうろおぼえなもんで。
いやもしかするとバージョン6以前のプレイヤーの話かもな
とりあえず遅くはなっただろ?

283:Now_loading...774KB
06/01/08 15:38:28 TYAiGOGC
>>271
それだと毎フレーム4方向のどっちか1ドット移動するわけで
乱数が偏らないかぎり、ぷるぷる震えるだけだぞw

284:277
06/01/08 15:43:06 KJRrS+v4
>>282
うーん、その時は10回ぐらい試行したんだけど、ばらつきが誤差の範囲内だったから、
ほんとに遅くなってるかどうかはわからんwその程度の差でした。

285:Now_loading...774KB
06/01/08 15:57:03 /JcSsHpp
オブジェクト指向は、若干の速度の低下には目をつぶって、読みさすさを優先するので、
ちょっと速度が落ちる分には、あまり気にしない。

ちなみに10万回ループさせて、
ローカル変数 285ミリ秒
プロパティチェック 328ミリ秒
その差、43ミリ秒だった。



286:Now_loading...774KB
06/01/08 16:03:38 9/Udlts0 BE:277509479-
>>285
1.15倍か。うちの環境でもそんな感じだったよ。
漏れの場合、ASがあまりにも重過ぎるから速度を最優先してる。

287:Now_loading...774KB
06/01/08 16:56:52 /JcSsHpp
>>286
10万回のループにつき0.043秒稼ぎたいのなら、別に止めはしないけど、
ループの度にいちいちローカル変数を書いてたら、ソースが冗長になって読みにくい。
読みにくいソースはメンテナンス性の低下になる。
array.lengthで済ませるのが一般的。

初心者も見ているスレなので、念のため。

288:Now_loading...774KB
06/01/08 17:29:32 pt1eNxsd
>>271

>>273も言っているけど、ifの中のsiのパスが違っていると思う。
_root.si に値が入っているのなら、_root.siを見ないと。

onClipEvent (enterFrame) {
_root.si = Math.floor(Math.random() * 3);
if (_root.si ==0 ) {
_y += 1;
} else if (_root.si ==1 ) {
_y -= 1;
} else if (_root.si ==2 ) {
_x += 1;
} else if (_root.si ==3 ) {
_x -= 1;
}
}


289:Now_loading...774KB
06/01/08 17:44:19 gcgw9X+W
家から30メートルのコンビに行くために車使うようなもの

290:289
06/01/08 17:45:50 gcgw9X+W
>家から30メートルのコンビに行くために車使うようなもの

速度のためにオブジェクト指向設計を犠牲にする事ね

291:Now_loading...774KB
06/01/08 19:24:22 9/Udlts0 BE:154171875-
>>287
マルチメディア系の人なのかな?
ゲームは毎フレーム処理しないといけないので
60フレームレートだと1割り込み0.01秒しかない。
そのうち描画で7割、スクリプト処理で3割CPUを裂くと
実際使えるのは0.003秒しかないんだよ

292:Now_loading...774KB
06/01/08 19:32:07 gP+B++Vu
そういや、配列の走査って
・for
・for ... in
・while
のどれが一番パフォーマンスいいの?


293:Now_loading...774KB
06/01/08 19:47:33 ZpgkmnfI
誰か知ったか野郎の>>291をどっかに隔離してくれよ。ウザい。

294:Now_loading...774KB
06/01/08 19:58:40 KyMr7udt
>>293
気にするな
覚えたてのことはついつい語りたくなっちゃう年頃なんだろう
もっとエロい人が出てきてやんわり本当のことを解説してくれて
結構、勉強になること多いし。

>>292
forとwhileは、デコンパイルするとどっちかに
置き換えられてた記憶があり、ほぼ同等のものかと。

for inはstringで扱っちゃうから問題外に遅いはず

295:Now_loading...774KB
06/01/08 20:33:05 83X87jt6
ところで、今の流れって何の質問?


296:271
06/01/08 21:33:10 nbBGBdhC
どうも271です。皆様レスをありがとうございます。
>>273,288の指摘どおり、siのパスが間違っておりました。
_rootの記述を見逃しておりました。
スクリプトどうもありがとうございました。


297:Now_loading...774KB
06/01/08 21:37:25 BTgPMFPk
>>295
特に質問とは関係ないところで、処理速度と作業性で、すったもんだがありました

298:Now_loading...774KB
06/01/08 22:02:07 cCa2ucSU
ASのちょっとした速度効率なんぞは、全体の表示面積を縦1ドット横1ドット小さくすることで
挽回できる程度のもんさ。

299:Now_loading...774KB
06/01/08 23:52:53 WBFN7PNf
くだらんな。見やすいソースが一番いい。

300:Now_loading...774KB
06/01/09 02:07:30 McPl+27X
でもフラッシュゲームのコーディングなんてほとんど一人だし、見やすさって関係ないんだよな。

301:Now_loading...774KB
06/01/09 02:52:21 kB19mAO0
>>300
小規模ならそうかもしれないが、
最近はグループワークも増えてるよ。
うちでもオリジナルのクラス群を改善しながらライブラリ化してるし。

今後はAS3.0への対応とFlex導入あたりからこの流れは加速すると思う。

302:Now_loading...774KB
06/01/09 05:06:35 /1KwNlPn
一人で開発してようと一日たつと
もはや他人のソース
現に俺は構造化プログラミングで一万行以上書いてたら
訳ワカメになって挫折した経験があるよw
それがきっかけでオブジェクト指向を本気で勉強した。

303:Now_loading...774KB
06/01/09 09:40:07 ivyBuoyf
動けばいいという発想の奴と仕事はしたくないな。

304:Now_loading...774KB
06/01/09 15:10:23 6ArFlqhw
とりあえず人間側の効率やAS側の効率やらの話の続きはム板かマ板で続けることにして、物凄い勢いで質問に解答しようぜ。


305:Now_loading...774KB
06/01/09 17:41:50 QX7+2YFY
Flashでオブジェクト指向の是非を語るスレ
あたりで立てていい?

306:Now_loading...774KB
06/01/09 17:47:55 ivyBuoyf
>>305
その話題はもう結論がでてると思う。

307:Now_loading...774KB
06/01/09 18:19:47 QX7+2YFY
ActionScriptのオブジェクト指向プログラム関係のスレ
スレリンク(swf板)

似たようなスレがあった。
ひま見て突撃してみる

308:Now_loading...774KB
06/01/09 20:09:26 GOHIDN9X
携帯向けFLASHを作っています。
Flash lite1.1で on ClipEvent(key Down)やonClipEvent(enterFrame)の代わりには何を使えばいいのでしょうか。
XP,FlashMXpro2004使ってます

309:271
06/01/09 20:28:34 vKFwIrd7
どうも271です。
>>296で解決したと書き込みましたが、>>283の指摘どおりプルプル震えるような
動きになってしまうところが気になってきました。
そこで>>288のスクリプトに付け足す感じでを乱数の数字が一秒ごとに変化するように
してみたいと考えております。そのためにはどのようなスクリプトを付け足せば良
いか、宜しくお願いします。

310:Now_loading...774KB
06/01/09 20:40:37 s4M6kIba
>>309
URLリンク(hakuhin.hp.infoseek.co.jp)
でも利用してみてはどうだろう。

311:272
06/01/09 20:50:46 K2eGkyRn
>>309
レスしてもスルーされるみたいなので、レスしたくなくなる気分(´д`)

312:Now_loading...774KB
06/01/09 20:54:17 jJ2XThGh
>>309
カウンタで判断するってのはどうだろう。
onClipEvent( enterFrame ) イベントごとにカウントして、カウンタがフレームレートと等しくなったら向きを変えるとか。

フレームレートが20fpsだとして、こんな感じとか。

var cnt = 0;
var x_move = 0;
var y_move = 0;

onClipEvent (enterFrame) {
 if( cnt == 0 ) {
  _root.si = Math.floor(Math.random() * 4);
  if (_root.si ==0 ) {
   y_move = 1;
  } else if (_root.si ==1 ) {
   y_move = -1;
  } else if (_root.si ==2 ) {
   x_move = 1;
  } else if (_root.si ==3 ) {
   x_move = -1;
  }
 }
 _x += x_move;
 _y += y_move;
 cnt++;
 if( cnt == 20 ) {
  cnt = 0;
 }
}

313:Now_loading...774KB
06/01/09 21:51:14 4KPmKh2e
>>308
ボタンのkeypressイベントと
MCのループ。

>>309
一秒ごとに呼び出すならsetIntervalとかもある。
でも、ゆっくりになるだけでぶるぶるしてることには変わりないと思うけど。

314:Now_loading...774KB
06/01/09 22:28:53 d4o66vkz
>>271
こんなんでました
フレームアクションね

spd = 5;//移動スピード
Interval = setInterval (this , "muki" , 1000);
function muki () {
 switch (Math.floor(Math.random() * 4)) {
  case 0:
   SX = spd;
   SY = 0;
   break;
  case 1:
   SX = -spd;
   SY = 0;
   break;
  case 2:
   SX = 0;
   SY = spd;
   break;
  case 3:
   SX = 0;
   SY = -spd;
   break
 }
}
mc.onEnterFrame = function () {
 mc._x += SX
 mc._y += SY
}

315:Now_loading...774KB
06/01/10 00:11:22 xzVvXagU
おながいです。どなたか助けてください。
ずーーーっと5時間近くやってるんですがわかりません。
外部テキストから読み込んだ16進数の値をムービークリップに読みこんで
外部からムービークリップの色を変えたいのですが、

[外部テキスト colorno.txt]
&daycolor02=0x3A3A3A&

[ムービークリップ1]
onClipEvent (load) {
this.loadVariables("colorno.txt");
System.useCodepage = true;
}

[上のムービークリップの中の中にいるムービークリッップ]
onClipEvent (load) {
thecolor = _parent.daycolor02;
myColor = new Color(this);
}
onClipEvent (data) {
myColor.setRGB(thecolor);
}

本当は中の方のMCに直接「this.loadVariables」で読ませればできるのですが、
管理上、こうせざるを得ません。(大量にあるので上の方の階層で指示をまとめたい。)
thecolorで指定するときに間違ってると思って色々やったのですが…。

お願いします!!!

316:Now_loading...774KB
06/01/10 00:37:54 sfrd/9VZ
>>315
パッと見、thecolor = _parent.daycolor02;をonClipEvent(data)に入れたら動きそうな気がする。


317:Now_loading...774KB
06/01/10 00:38:20 TTvP2cOA
>>315
上の階層のonClipEventで読み込んでるデータが
下の階層のonClipEvent時にまだ読み込み完了してない可能性が高い。
なのでtraceして要確認。

もうひとつは
thecolor = _parent.daycolor02;
がStringになってる可能性があるので、
thecolor = Number(_parent.daycolor02);
にでもしてみましょう。

318:Now_loading...774KB
06/01/10 00:46:34 Tpd/NtI2
>>315
MCのなかにあるMCに書いてある
onClipEvent (data) { }
って呼び出されてる?

319:315
06/01/10 01:33:44 xzVvXagU
せっせと外部テキスト作ってたらこんなにレスが!!!
ありがとうございます。

>>316
そう思ってやってみたのですが、駄目だったのです。

>>317
すみません。まだASが付け焼き刃状態で…。本当に初歩な質問だと思うのですが、この場合のtraceってどうやるんでしょうか?orz

もうひとつの方法は今から試してみます!

>>315
呼び出され、てるとおもうのですが。
ここには、違うアクションもいれていてそっちは動いてるんです。

320:315
06/01/10 01:44:58 xzVvXagU
thecolor = _parent.daycolor02;

thecolor = Number(_parent.daycolor02);
にしてみました。

だめですた…。
色々まだ試してみます。

321:Now_loading...774KB
06/01/10 01:54:11 TTvP2cOA
もうその形はやめてloadVars使った方が良いと思うよ。
こんなのとか。(動作確認してないけど)

[ムービークリップ1]
onClipEvent(load){
var loadData = new LoadVars();
loadData.load("colorno.txt");
loadData.onLoad = function(s){
if(s){
for(var n in this){
if(typeof this[n]=="movieclip"){
this[n].myColor = new Color(this[n])
this[n].myColor.setRGB(thecolor)
}
}
}
}
}

322:315
06/01/10 02:39:45 xzVvXagU
>>321
うわあ。なんかこの夜中にありがとうございます!!

これは、ムービークリップ1のクリップアクションとして書いて、
"movieclip"の部分に[中の中にいるMC]のインスタンス名を書けば
良いのですよね?

と思ってやってみたのですが。
[中の中のMC]は実は同じものが30個ほどありまして、それぞれ
d01~d30というインスタンス名なんです。
"movieclip"に"d[01]"と書いてみたのですが駄目でした。
this[n]というのはそういう意味ではないのでしょうか?
こんな感じです。

onClipEvent(load){
var loadData = new LoadVars();
loadData.load("colorno.txtt");
loadData.onLoad = function(s){
if(s){
for(var n in this){
if(typeof this[n]=="d[01]"){
this[n].myColor = new Color(this[n])
this[n].myColor.setRGB(thecolor)
}
}
}
}
}

323:315
06/01/10 03:10:57 xzVvXagU
すみません。
上のレスおもいっきし勘違いです…。
"movieclip"の部分はそのままだな、ということはなんとなく…。

が、やはり私には高度すぎてどう書けばいいのかすら分からずorz。
this[n]のthisを書き換え?とか、中の中のMCをいじらなければ?
とかぐっちゃぐちゃになってきますた。

お風呂につかって出直してきます…。


324:Now_loading...774KB
06/01/10 04:28:22 ffiWHMuK
>>323
これじゃだめ?
[ムービークリップ1]
onClipEvent(load){
var loadData = new LoadVars();
loadData.load("colorno.txt");
loadData.onLoad = function(s){
if(s){
for(i=1; i<31; i++){
var obj=eval("d"+i);
trace(obj);

myColor=new Color(obj);
myColor.setRGB(loadData["daycolor02"]);
}
}
}
}
因みにインスタンス名をd1~d30にしないと動かないかな
traceを試しに入れといたんで、ctrl+enterしてみれ

325:Now_loading...774KB
06/01/10 08:03:17 TTvP2cOA
>>323
ごめん、眠くてミスってた。
正しくはこうだね。

[ムービークリップ1]
onClipEvent(load){
var loadData = new LoadVars();//loadVarsオブジェクトをloadDataとして定義
loadData.load("colorno.txt");//loadDataにcolorno.txtをロード
loadData.onLoad = function(s){//ロード完了したら引数sにtrueを。
if(s){//引数sがtrueなら処理
for(var n in this){//自身の中にある変数、movieclipを全て走査
if(typeof this[n]=="movieclip"){//走査した変数がmovieclipならば
this[n].myColor = new Color(this[n]);//そのmovieclipにColorオブジェクトをmyColorとして定義
this[n].myColor.setRGB(loadData.daycolor02);//myColorにloadData内のdaycolor02を設定
}
}
}
}
}

326:Now_loading...774KB
06/01/10 08:11:58 AdUpzYxy
Flash8以降Colorクラスは非推奨、代わりにColorTransformクラスをつかう。
これから書くなら後者での方が良いぞ。

327:308
06/01/10 09:27:51 EpAv1nX5
>>313
ありがとうございます。とにかくがんばってみます。

328:Now_loading...774KB
06/01/10 11:05:41 QT6GAYL7
ある条件が一致した場合に、スペースキーをタブキーと同じ動作にしたいのですが、
これを簡単に実現する方法はありますか?

Selectionクラスを使って、手で実装するしかないですか?

329:Now_loading...774KB
06/01/10 13:25:51 X2H19CGQ
Flash8です。
色々な極座標をつかってMCを動かしたいのですが知識が全くないので何からすればいいのか分かりません。
例えば、強引に螺旋をつくるなら、円運動をさせながら半径を大きくしていけばいいのですが、
極座標のアルキメデスの螺旋式を、どうアクションスクリプトで書けばいいのかさっぱりです。
よろしくお願いします

330:Now_loading...774KB
06/01/10 14:07:24 1GFKHMvC
>>329
他の言語では書ける?

331:Now_loading...774KB
06/01/10 16:07:08 tIRk7UeA
>>329
まず円運動をスクリプトで書けるのか?
とりあえずx座標とy座標に分けて考えなきゃダメだぞ

332:Now_loading...774KB
06/01/10 16:09:18 f9wjuTtp
内包されているMediaPlayBackのコンポーネントを徐々にフェードインして
だしたいのですが、ムービクリップと同じように、アルファをアニメーションできる項目が
なかったので、アクションスクリプトを以下のよう組んでみました。

自身のオブジェクトアクション//
onClipEvent(load){
_root.video._alpha=0
while(true){
if(_root.video._alpha > 100) break
_root.video._alpha++
}
}


video//コンポーネントのインスタンス名です。

結果、機能しなかったんですが(最初からコンポーネントが表示されています。)、なにか間違っているのでしょうか?
よろしくお願いします。

flash8pro


333:329
06/01/10 17:42:05 X2H19CGQ
>330,331 どうもです。CGIすこしかじった程度で、他の言語でも掛けません
アルキメデスの螺旋ですが、「r=Θ」(半径=角度)ですよね?
どう考えていけば、
_x=~
_y=~
ってなるんでしょう?

ちなみに、いま使ってる螺旋運動です
Flash参考書を見て数学の教科書と睨めっこして理解しただけです。
onClipEvent (load) {
//回転の中心
c_x = 100;
c_y = 100;
//半径と増加量
r = 1;
IncR = 1;
//角度と増加量
radi = 0;
IncRadi = 5;
}
onClipEvent (enterFrame) {
radi += IncRadi;
r += IncR;
radian = radi*Math.PI/180;
this._x = c_x+Math.cos(radian)*r;
this._y = c_y+Math.sin(radian)*r;
}



334:329
06/01/10 18:05:30 X2H19CGQ
書いてて気がつきました
r=Θなんだから、>333のスクリプトは
r==radi、IncR==IncRadiになるように考えて、

onClipEvent (load) {
//回転の中心
c_x = 200;
c_y = 200;
//半径と増加量(角度にも流用)
r = 1;
IncR = 1;
}

onClipEvent (enterFrame) {
r += IncR;
radian = r*Math.PI/180;
this._x = c_x+Math.cos(radian)*r;
this._y = c_y+Math.sin(radian)*r;

あっという間に遠くへ飛んでいってしまうなぁ
これでいいんでしょうか?

335:Now_loading...774KB
06/01/10 18:17:44 1GFKHMvC
>>332
whileなどのループ内では画面の再描画は行われないので
onEnterFrameかインターバルを使ったイベントで画面を書き換えよう。
onEnterFrameを使って「1フレームづつアルファの値を変える」みたいな感じ。

336:Now_loading...774KB
06/01/10 18:49:40 cLgJS/xb
>>329
FPS30のサイズ550*400

rot = 0;
wd = 0;
cut = 10;

onEnterFrame = function(){
rot += 5;
wd += 0.3;
rot_x = Math.cos(rot*Math.PI/180)*wd;
rot_y = Math.sin(rot*Math.PI/180)*wd;
mc1._x += (275+rot_x-mc1._x)/cut;
mc1._y += (200+rot_y-mc1._y)/cut;
}
stop();

計算とかAS全然駄目な奴が勘で作るとこんな感じ。

337:331
06/01/10 19:30:34 tIRk7UeA
>>329
アルキメデスの螺旋じゃなくて、円を発展させる感じで考えたほうが楽かも

329ふうにonClipEventとして書くならこんな感じ

onClipEvent (load) {
 r = 10
 rc = 0
}
onClipEvent (enterFrame) {
 rc++
 kakudo = (kakudo + r >=360) ? 0 : kakudo + r;
 radian = kakudo * Math.PI/180;
 _x = Math.cos(radian)*rc + Stage.width/2;
 _y = Math.sin(radian)*rc + Stage.height/2;
}

周間の距離が一定になってるはずです

334で書いたのは回転角度と回転半径が
どっちも『r』だからだめなんじゃないかな?
あと"Stage.width"、"Stage.height"でステージサイズの幅と高さを取得できるから
回転半径をど真ん中に置きたい場合にはステージサイズに影響されないから使える

338:Now_loading...774KB
06/01/10 23:22:48 w4gMWtBf
デバイスフォントの大きさが同じサイズ指定してもMacとWindowsとで違うので、
実行環境がMacとWindowsかをActionScriptで取得して、フォントサイズを
条件分岐したいと思ってます。
実行環境がMacかWindowsかを取得するにはどのコマンドを使ったらよいでしょうか?

339:315
06/01/10 23:22:59 +ecfbtce
>>324
>>325

みなさんありがとうございます!
こんな勉強不足の人間のために…。
やってみましたが、全滅ですた。ああ。

なんか、違う方法とってみます。
すみませんでした。
でも勉強になりました!

340:Now_loading...774KB
06/01/10 23:35:05 QT6GAYL7
>>338
つ System.capabilities.os

341:315
06/01/10 23:49:54 +ecfbtce
去っておいて、すみません。
最後に一つだけ。

どうもMC1の2フレーム目にMC2(dd02)がいて、その中にMC3(d02)がいるという構造が駄目な気がしてきました。
MC1のクリップアクションからMC3(d02)に
this.dd02.d02.loadVariables("colorno.txt");
という感じで渡すにはどうすればいいのでしょうか?
これはすべてが1フレーム目にいる場合に通用するようなのです。

たとえば
this.dd02(2).d02.loadVariables("colorno.txt");
という感じで指定できないでしょうか?

お願いします!

342:Now_loading...774KB
06/01/10 23:57:37 TTvP2cOA
>>341
そりゃ当たり前だよ。
別のフレームにいるならその前にそのフレームに移動しなきゃ駄目。

とりあえず
this.gotoAndStop(2);
this.dd02.d02.loadVariables("colorno.txt");
とでもやれば出来そうだけど、
そもそも、そのやり方から離れた方がいいんでは…。

343:315
06/01/11 00:13:52 E8I3OBqt
>>342

ありがとうございます!できました!

やっぱ当たり前でしたか。まだまだ分かって無くて。
皆さんに教えていただいた、loadVarsはまだ自分では理解できないので
いったんloadvar...でやってから勉強しつつ再チャレンジしてみようと
思います!!
やっぱスマートなスクリプトの方がいいですよね。


344:338
06/01/11 00:16:19 deOBJOsm
>>340
ありがとう!取得できました。助かりました。

345:Now_loading...774KB
06/01/11 00:34:29 6z+myDoE
>>325
横から質問すんません

これを実際に試すと
for(var n in this)のthisが、traceするとloadDataになって
内包されたMCは返されないんですけど、flash8だと平気ってことですか?


346:Now_loading...774KB
06/01/11 01:08:51 dXBc1+ds
ハロー(注意報)。

getTimerの精度ってどこまで保障されてるんでしょう?
どの環境でも1ms刻みの数字が返ってくるものと考えていいんでしょうか。経験的にどうっすか。

今作ってるゲームで、高フレームレートと正確な実行速度が欲しいので
Flash自体のフレームレートは100fpsにして、
フレーム内ではgetTimerの変化ぶん進めるようなことをやってるんですが、
もしgetTimerの精度が低い環境があると動きがカクついてしまうなと。
そういうのJavaアプレットやiアプリで何度も経験してまして。

一応、手元の3台のWindows PCのIEでは60fpsから90fpsでなめらかに動いているようなんですが。
wmodeの変更は無しです。カーソルキーを使うし、完全に正しい実行速度にはならないので。

347:Now_loading...774KB
06/01/11 01:17:39 AZQujnRA
>>345
Flash8どーのこーのではなく、内包されたMCが返ってくるようにすればいい。
>325のASの for( var n in this) { } の中身を

for (var n in _root.my_mc) {
if (typeof _root.my_mc[n] == "movieclip") {
var myColor = new Color(_root.my_mc[n]);
myColor.setRGB(Number(loadData.daycolor02));
}
}

にする。_root.my_mcはMCを内包しているMC(大元のMC)のインスタンス名ね。

348:Now_loading...774KB
06/01/11 01:36:43 AZQujnRA
>>346
過去ログ見ると

内部的には結構信頼できると思うけど、
値を参照→表示
とかに時間がかかるのであまり信頼できない。

らしいよ。

349:345
06/01/11 01:55:28 6z+myDoE
>>347
すいません。質問の仕方が悪すぎました。
「このthisがFlash8ならムービークリップを返す」か否かを聞いてみたかったんです。

flashmx2004でターゲットパスを挿入でASを書いたMCを指定しても、
相対パス指定だとthisと表示されるので動くはずなのに、実際は違うものが返されましたが、
詳しく解説してくださっている部分はMCを返す表現をしていたので、
自分の設定やなにかで変わるのか、それともヴァージョンによる違いなのかを
確認したかったのです。

分かりづらくてすみません。


350:347
06/01/11 02:05:34 AZQujnRA
>>349
それはすいません。いや、すいますいません。
loadData.onLoad = function(s){} 内に
thisを書いてるからloadDataが返ってくると予想。
Flash8持ってないけど同じようになると予想。

351:Now_loading...774KB
06/01/11 02:47:07 FYB2KsDf
質問です。

swfに外部swfを読み込む際に、読み込み時に、下のムービーを消さずに
再生したいのです。
例)池の上に魚を読み込むような感じ。
  このとき、池が消えないように、魚を外部から読み込みたい。

loadMovieNumで、stage_mcに外部swfを読み込んだのですが、
何の反応もしません。


簡単なもので、以下のように実験しました。

ボタンとstageのMCを用意して、
ボタン_mcに

on(release){
_parent.stage.loadMovieNum("A.swf",10)
}

ちなみに、loadMovie("A.swf")
は、うまくいきましたので、パスは間違っていません。
なにか、ごく基本的なこと見落としてしまっているのでしょうか?
ちなみに、WinXP,MXPro2004,Player7です。
よろしくお願いします。

352:Now_loading...774KB
06/01/11 06:22:24 S+0IlYUq
on(release){
_parent.stage.loadMovie("A.swf");
}
ができてるってこと?

353:Now_loading...774KB
06/01/11 06:36:49 S+0IlYUq
追記:
つかloadMovieやloadMoviNumと_mc.loadMovieは違うぞ。
それぞれの引数とか使い方をヘルプでチェック。

354:Now_loading...774KB
06/01/11 10:02:02 m5jnDU/k
351です。
ヘルプやら参考サイトにかじりついてやっとこさloadMovieNUMを理解できました。インスタンスは必要なかったのですね。
loadMovieNUM(swf,1)のみで読み込めました。アドバイスくれた方に感謝です。ありがとうございました。

355:329
06/01/11 12:14:53 CS1kKpg7
>336,337 ありがとうございます。螺旋は出来ました。
カージオイド曲線とか花びら見たいのも挑戦してみます。
this._x = c_x+Math.cos(radian)*r;
this._y = c_y+Math.sin(radian)*r;
これを基本にして、各極座標の条件に合うようにいじればいい気がしてきました

356:みゆ
06/01/11 15:34:53 t6rDFzfA
ムービクリップA内にあるボタンAから、
ルートにあるものを操作させたいのですが、反応しません。


以下がボタンAのASです。

on (press) {
_root.video._alpha=0
}


ボタンAを押すとムービクリップAが消えるようにしたいです。
初歩的な質問かもしれませんが、よろしくお願いします。


357:Now_loading...774KB
06/01/11 15:57:52 KuLxPtAv
on (release, releaseOutside) {
_root.video._visible = 0;
}

358:Now_loading...774KB
06/01/11 16:00:25 KuLxPtAv
というかインスタンス名ちゃんとvideoになってるの?

359:Now_loading...774KB
06/01/11 16:21:05 kUhrX+6s
>>356
非表示にしたいだけなら_visible使いなよ

360:Now_loading...774KB
06/01/11 16:21:45 kUhrX+6s
357が書いててくれたね。スマン

361:Now_loading...774KB
06/01/11 17:05:27 XOasW1J4
環境
WinXP FLASH8

ムービークリップで右から左へ動くようなアニメーションをさせています。
この動かす対象を変更したいです。

具体的にいうと
ムービークリップ→プロパティ→シンボルの入れ替え
で対象のインスタンスをライブラリの入れ替えしたいです。
どのような関数を使用すればよいのでしょうか?

よろしくお願いします。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch