ActionScript 誰かが物凄い勢いで解答するスレ 10at SWF
ActionScript 誰かが物凄い勢いで解答するスレ 10 - 暇つぶし2ch271: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

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

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

よろしくお願いします。

362:Now_loading...774KB
06/01/11 17:25:58 WDJXuQFC
質問させてください。
ブラウザが閉じられたり、ページが移動したりしたときに、
それをFlashムービーが感知して処理を行うことはできますか?

例えば、ブラウザが閉じられたときにFlashムービーから
CGIに値を送信する。というような処理です。


363:みゆ
06/01/11 19:25:42 t6rDFzfA
解決しました!
alphaは、なぜか効かないみたいですね。
そういうものなのかな。。
ありがとうございました。


364:Now_loading...774KB
06/01/11 21:41:21 6uJ9LT2C
>>361
右から左に動く空のMCを作成して
そこにattachMovie

>>362
Flashだけでは無理かな。
JavaScript使えば出来そう。

365:Now_loading...774KB
06/01/12 00:05:07 ZU33uKVg
>>362
別窓開いてLocalConnection使うとか

366:Now_loading...774KB
06/01/12 01:26:52 PlCKlno8
WIN FLASH5/MX2004使用です。
NPCと対戦するゲームで、自分の番→NPCの番→自分…と順繰りにさせるには、
どういった処理をすれば良いでしょうか?
頭をフル回転させてみたんですが
カラMCに、プレイヤーに順繰りに変数を渡していくスクリプトを書き
ゲームを動かすスクリプトの詰まったMCへその変数をぶっこんで、プレイヤーごとに動かして行く
…というどんくさい処理しか思い浮かびませんでした。
ババ抜きや人生ゲームのような、動きは一定で複数人のNPCがいる類いのゲームです。
スクリプト自体でなくてすみません。お知恵をかして下さい。

367:Now_loading...774KB
06/01/12 01:34:19 r+Vjg2t+
>>366
ゲームを作れるレベルにあって、
その程度を組めないってのは想像出来ないんだけど…。

onEnterFrame, setInterval, 又はfor等で一気に処理にしても、
その処理が終わった時点で中断or停止してから
自分の操作を再設定でいいんじゃないの?

368:366
06/01/12 01:37:43 PlCKlno8
補足です
>カラMCに、プレイヤーに順繰りに変数を渡して行くスクリプトは
ゲームを動かすスクリプトの1プレーヤー分の処理が終了したら
カラMCにプレイヤー01の番が終了したとフラグを立てる
(カラMCの中の処理)→01終了のフラグが立ってたら、
ゲーム部のスクリプトを次のプレイヤー02で開始させる
以降、02終了フラグが立ってたら03、03終了が立ってたら元に戻って01…

何かもどかしいというか、多分変ですよね。ご指導お願いします。

369:Now_loading...774KB
06/01/12 01:40:14 25zAKlwq
自分の番で発生するイベントハンドラをトリガーにしてNPCの処理とかすればいいんでねーの?

370:366
06/01/12 01:41:36 PlCKlno8
>367
その一気に処理するというのがどうしたらいいか、よく判らなかったもので…。
そうですね、要は繰り返させればいいんですよね。ヒント掴めました。ありがとうございます。

371:366
06/01/12 01:44:29 PlCKlno8
>369
連レスすみません。
自分の番→NPCの処理をfor辺りでループさせる→止める→自分の番…
こんな感じでしょうか。
もっと勉強してきます。ありがとうございました。

372:Now_loading...774KB
06/01/12 20:15:17 Qlh/Yqmq
すみません。ある程度探しましたが、なかったので質問させていただきます。

_x==50になるまで_x ++;を繰り返し、50になったら次に移動 というASはどのようにすればできますか?

373:Now_loading...774KB
06/01/12 20:36:28 zRaxfP7e
>>372
MCインスタンスの移動のことかな?

374:Now_loading...774KB
06/01/12 20:47:46 wDzenzXP
>>372
次って何?

375:Now_loading...774KB
06/01/12 20:58:01 u3nPDAbZ
>>372
何がやりたいかよく分からないけど、こういう事?

//フレームを止める
stop();
mc.onEnterFrame = function() {
if (mc._x < 50){
mc._x++;
} else {
delete mc.onEnterFrame;
//次のフレームに移動
nextFrame();
}
}

376:Now_loading...774KB
06/01/12 22:01:08 Qlh/Yqmq
説明不足ですみませんでした。
アクションゲームなどの足場などの当たり判定のところで、今までは
onClipEvent(enterFrame){
_y+=2;//実際には違うがこのような感じに重力を設定
for (i=0;i<=5;i++){
if (_root.stage.hitTest(_x,_y,true)) {_y--;}//押し戻し
}
}
とforを使って押し戻しを繰り返すことでやってきましたが、
forだと無駄な場合も出てきてしまうので、ifのhitTestがtrueだったらもう一回ifをやり、
falseだったら繰り返さないという風なことはできないかと考えました。

377:Now_loading...774KB
06/01/12 22:23:28 QLZt9VVm
whileでいいんじゃね

378:Now_loading...774KB
06/01/12 22:33:35 wDzenzXP
forの間は画面再描画は無いから、_y-=5;と同等になるのでは?
hitしたら足場の上に戻すという単純な方法でいいんじゃないかな。

379:Now_loading...774KB
06/01/12 22:57:11 Qlh/Yqmq
みんなサンクス。とりあえずwhileを使うことにする。
なんかC言語のとこを参考にしたが、
while(_root.stage.hitTest(_x,_y,true)) {_y--;}
でいいのかな
てかifとwhileが変わっただけやんwこんなの知らなかったなんて恥だなorz
ありがとでした。

380:Now_loading...774KB
06/01/13 00:58:26 5cZBCBOb
>>379
普通MCの座標を動かすのにforとかwhileとか使わないと思うけど。
上からMCが落ちてきて地面にぶつかったら(y座標が規定値を超えたら)押し戻す処理なら
onEnterFrameとif文でできないかな。

381:Now_loading...774KB
06/01/13 08:01:28 +G9x7kBK
複数のMCのX,Y座標を配列に入れて一度にforで処理するのはわかるが
ひとつのMCをチェックするのにforやwhileを使う必要は無いでしょ。
>>376のスクリプトで言うとなぜ1フレームで6回処理する必要があるのか?
whileにしたところでhitしたときは1回しか処理されないし。だったらifでいいじゃんと。
>>380の言うようにenterframe,ifで問題なし。

382:Now_loading...774KB
06/01/13 12:09:04 ywz++GGq
まだまだ未熟者です。
突然ですが、書き出しして、問題なくフラッシュを見ることはできるのですが、
タイムライン上でプレビューしようとすると、5フレームぐらいで止まるんですが
なぜでしょうか?
わかる方教えてください。

ちなみに、自分はMCを使わずにグラフィックシンボルで作っています。
ソフト:flash MX

383:382
06/01/13 12:09:40 ywz++GGq
すいません、ageました、、、

384:382
06/01/13 12:10:37 ywz++GGq
すいません、誤爆しますた。。。

385:Now_loading...774KB
06/01/13 15:09:10 VsXXwlcF
いまポトリスのようなゲームを作っているんですが、
弾が地面に当たると地面が削れるようにしたいんですが、
どうすればいいんでしょうか?
よろしくお願いします。

386:385
06/01/13 15:14:39 Ps1ru+2P
すいません、環境書くのを忘れました
flash mx professional 2004です。

387:Now_loading...774KB
06/01/13 15:51:16 eBYLI5Tl
>>385
毎フレーム、弾のMCと地面のMCをhitTestで接触判定して
接触していたら地面MCを消す。

スクリプト書けというなら、
このスレのほとんどの奴がふざけるなと言うと思う。

388:Now_loading...774KB
06/01/13 16:15:30 iVTDMpHr
>>385
現状で、地面はどういう風に書いてるの?
グリッドで管理してる?それともふつうに書いてる?

前者だったら、どのグリッドに着弾したかを判定して、消せばいいだけで、
後者だったら、Flash8以降であれば、ビットマップデータに変換しておいて、
着弾周辺のピクセルを消す処理になるよ。
8なら割と楽だけど、2004以前だと厳しい処理かもね。

2004で後者なら、消すんじゃなくて、着弾地点に背景色と同じMCをattachして
見た目削れてるようにするのが楽なんじゃないかな?増えてくると厳しいけど。

389:385
06/01/13 16:31:53 53v7uFFH
>>378-388
ありがとうございます。
Flash8以降じゃないと厳しいのかorz


390:385
06/01/13 16:32:34 53v7uFFH
すいません、誤爆です

391:Now_loading...774KB
06/01/13 17:04:08 Uph/ZoMW
>>380,>>381
問題大ありです。
説明していないところがあるので、それではできなくなります。すみません。
 ■  ■

■■■■■
このような感じのステージ画像が_root.stageの中身となります。
この状態では画像と画像のhitTestは使えないので、片方を点にしました。
それにより、一つの画像だけで段に乗るということができます。
そして地面、天井、壁が同じというわけではないので、
規定値を越えたら・・・ということはできません。

そして重力もenterFrameで
juu+=1.5; _y += juu/4; if(地面に降りたら){juu=0};
という風にやっており、場合によっては1以上めり込んでしまう場合があるので、
forやwhileを使う必要があったのです。
地面だけの場合はそれでも必要ありませんでしたが、
複数場所があるのでそれではダメです。

長文失礼しました。

392:Now_loading...774KB
06/01/13 17:44:39 eKb95G/I
重力とかの加速度とあたり判定は無関係でしょ。
ヒットポイントは一つだけなのかな?
キャラクターに何カ所かあたり判定ポイントを設定したりするけど。
いずれにしても、hittestをループで戻るまで呼ぶなんて、俺は絶対やらんな。
ヒットしたらそれの座標を計算して戻してあげればいいだけ。

393:Now_loading...774KB
06/01/13 17:47:44 eBYLI5Tl
>>391
えーと、それは一枚の画像をバックに置いて
座標値で地面を決めているということ?
だったら地面座標よりMCが下に行った場合は、
MCのy座標をマイナスして地面座標に近づけるという方法ではなく、
MCのy座標を地面座標にすればいいだけじゃないの?

394:Now_loading...774KB
06/01/13 18:00:12 Uph/ZoMW
ちなみにParaFlaです。
>>392
ふむ、計算ですか。
現在は地面のy座標は3つ(実際には段がもう一つ上にある)なので、
これはそっちのほうがいいかもしれない…

ですが、ナナメがモーフィングさせたときにそれでは対応できないか・・・

>>393
画像そのものが当たり判定になってます。
キャラの足のところの点が地面の画像に当たると押し返す・・・みたいな
地面の座標は考えて描いたので分かりますが…

395:Now_loading...774KB
06/01/13 19:35:25 eBYLI5Tl
ああ、地面がうねっていたりした場合に、
MCと地面のY座標差が判らないってことね。
それなら俺もループ処理ぐらいしか思いつかないな。
8ならビットマップで当たり判定とれるが、paraflaか・・・。

396:Now_loading...774KB
06/01/13 22:03:20 lrqBlCg4
どうしてもその方法でっていうなら、地面の座標を
今回と前回のMC座標との間で2分法を使って探索すれば
ある程度は計算オーダーを稼げると思うよ

397:Now_loading...774KB
06/01/13 23:50:07 Uph/ZoMW
>>395
一応ParaFlaでもフィルタとか影とか8は使えるのでもしかしたらできるかもしれませんが…
8はよくわからん(´・ω・`)

>>396
2分法は詳しいことは知らないが、
今の当たっているときと、1フレーム前の当たっていないときの座標を取り、
その間の地面の座標を求め、_yに入れるということ?
ふむ、それならよさそうだけどやり方がorz

398:Now_loading...774KB
06/01/14 03:13:53 s3zLmntW
>>397
var a = 前回のY座標
var b = 今回のY座標
var rimit = 10; // 最大探索回数
var eps = 0.1; // 収束条件
var m;
do {
m = (a + b) / 2;
if (_root.stage.hitTest(x,m,true) == true) {
b = m;
} else {
a = m;
}

if (--rimit < 0) { break;} // 探索打ち切り

} while (Math.abs(b - a) >= eps);

y = a; // 結果

ちなみにこれX座標については全く考慮してないから。ただ上に押し上げるだけ。
でもこれで早くなるかどうかは実際に動かしてみないと分からん。
X座標も変化させたいならMCの移動関数から導くとか直線補完したりしてくれ。
2分法については詳しくはググればいくらでも出てくる。

399:Now_loading...774KB
06/01/16 18:26:46 P+/bYnKS
下記の条件でFLVファイルを読み込んでいるのですが、completeイベントでの処理が発生しません。
いろいろ試してみましたがNGなので、質問させていただきます。
どなたか原因に心当たりのある方がいましたら、レスしていただけると助かります。
Flashバージョン:Flash8 Professional(Windows)
FLVエンコードソフト:Flash8付属のVideo Encoder(Flash作成と同一マシン)
 FLV出力設定は、Flash7標準品質とFlash8標準品質の両方
 FLVファイル名は「sample1.flv」です。

コードは下記です。
コードについては、Flashのヘルプをほとんどそのまま使用しています。

import mx.video.*;
var listenerObject:Object = new Object();
listenerObject.ready = function(eventObject:Object):Void {
my_ta.text = "fin";
};
my_FLVPlybk.addEventListener("ready", listenerObject);
my_FLVPlybk.contentPath = "sample1.flv";

補足としてですが、completeイベントでのイベントは動かないのですが、readyイベントに変えてみると再生の初めに正常にイベントが発生しテキストエリアにfinと表示されました。
以上、わかりにくい部分があるかもしれませんが、よろしくお願いいたします。


400:399
06/01/16 21:08:29 VIhD7eZ/
ちなみに、FLVファイルの再生時間は60秒ほどで、ローカル環境で試しています。

401:Now_loading...774KB
06/01/16 21:53:04 fupWklTl
Flash MX 2004を使っているのですが、if文の分岐で「(ムービークリップ名:selectMC)が3フレーム目の時だけ働く」というのはどういったif文を書けば良いのでしょうか?
ASに詳しい方、是非ともよろしくお願いします。

402:Now_loading...774KB
06/01/16 22:00:14 TPbDPTY2
onEnterFrame=function(){
if(selectMC._currentframe == 3){
this.play();
}
}
とかそんな感じ。
何が働くのか良くわからないから
this.play()にやりたいこといれてくれ。

403:Now_loading...774KB
06/01/16 22:44:02 fupWklTl
>>402
ありがとうございます。
ちなみに、「selectMC」が3フレーム目で、「Leftキー」を押したとき
という条件だと、

onClipEvent (keyDown) {
if(Key.isDown(keyLEFT) && (selectMC._currentframe == 3)) {
 上記の時行うこと}
}

といった記述方法で間違いないでしょうか?
試して見たのですが、どうにも働かず…。
なんども申し訳ありませんが、よろしくお願いします。


404:Now_loading...774KB
06/01/16 22:44:56 8dZFOuyO
質問です。
あるときに画面のどこでもいいからクリックしたら特定の処理をしたい場合に
画面サイズのMC(base)をつくって以下のASを実行させたのですが
base.onPress = function(){
 //処理終了
 this.onPress = null;
 this._visible=false;
}
次にbase._visible = trueにしたときに
頼みもしないのにbase上のマウスカーソルが指の形のままになってしまいます。
(クリックしても反応はなし)
onPress = function()を解放してもマウスがRollOver反応のはなくならないのでしょうか?

XPでFLASH8(パブリッシュ設定は6)使ってます。

405:Now_loading...774KB
06/01/16 22:48:15 TPbDPTY2
keyDownがちゃんと動いているか
onClipEvent (keyDown) {
if(Key.isDown(keyLEFT)){
trace("OK");
}
}
とかで一つづつ動作ためしていくとよろし

多分、ASかいている場所が違うMCで、パスが異なっている。
_root._selectMC._currentframe == 3
で行けるかな。

406:Now_loading...774KB
06/01/16 22:52:18 TPbDPTY2
>>404
useHandcursorかな?

Flashでつくられたサイトでクリッコして画面が変わっても
指の形は残っちゃう仕様だからそっちかも

マウスカーソル消すか、リフレッシュして
再描画すれば消えるかも。今、試す環境無くてスマン

407:Now_loading...774KB
06/01/16 23:26:56 fupWklTl
>>405
本当に何度も申し訳ありません。
色々教えてくださったにも関わらず、結局出来なかった私をお許し下さい。
一応、作成途中のflaファイルをUPしますので、宜しければご指南の程よろしくお願いします。

URLリンク(www.uploda.org)
上記「upローダー」の288371番です。

408:Now_loading...774KB
06/01/17 00:46:22 FfgYTOrY
計算した値を少数第2まで表示させたいのですが、
どうしたらよいですか?

409:Now_loading...774KB
06/01/17 00:54:26 Qufq7UNr BE:39644633-
>>408
100かけて小数切り捨てて100で割ったら求まりますよ~

410:Now_loading...774KB
06/01/17 00:56:05 6+LQdW+s
>>407
onClipEvent (keyDown) {
if (Key.isDown(key.LEFT)) { //←「.」が抜けてる。
trace("OK");
}
}
教えてもらったASがどういうことをやっているのか考えたらわかる。

411:Now_loading...774KB
06/01/17 21:39:47 Ck6hMZ4k
onClipEvent(enterFrame) と onEnterFrame の違いについて考えてたんだけど、
onClipEvent(enterFrame) が Flash Player 5 で、
onEnterFrame が Flash Player 6 で、
onEnterFrame のほうが、いろんなところで呼び出される関数を切り替える自由度があるよね。
つまりその自由度のために onEnterFrame が生まれたってことで、
onEnterFrame のほうを使用するのが推奨されてると考えていいんだよね?

412:Now_loading...774KB
06/01/17 22:24:02 05Esgxak
>>411
onClipEventは同じシンボルをASだけ変えて配置するのに便利。
どちらもアリ。

413:Now_loading...774KB
06/01/18 01:47:00 pnhnj0Ef BE:52859243-
>>411
インスタンスを
静的に作るならonClipEvent(enterFrame)
動的に作るならonEnterFrame

414:Now_loading...774KB
06/01/18 02:01:57 rshw4oq3
on~はイベントドリブンを実装したという感じ。
ASというoopを目指してる言語とはちょっとちがう気がする。
自分としては、リスナーやらいろいろ使える方がいいし、
どうせ学ぶんなら進化していく方を選ぶな。

415:411
06/01/18 02:06:34 NHWBm/uJ
>>412
ごめん、状況がよくわからない。
よければ、onClipEventでのコードとonEnterFrameでのコードを書いて見せて。

>>413
そう使い分けると、どうなるの?
それがあなたのポリシーって話なのか、そうすると保守性がよくなるのか、
そうすると速度的に有利だとか、そのへんの話が見えないよ。

416:Now_loading...774KB
06/01/18 02:22:48 h/dLrrJr
>>411
多分5の頃はカンタンプログラミング寄りの設計で
6から潮流にあわせたoopを目指した結果だと思うが。

速度はたぶんコンパイルすると同じ処理になるから
変わらないはず。試してないけど。

個人的にはあるMCが独立した動きをして他に影響しない場合、
親の変数を見て色が変わるだけとか、のときのみ
気楽にイベントハンドラで適当に書いてる。

つうか偉そうだな喪前

417:Now_loading...774KB
06/01/18 10:38:51 c2pxWpU+
attachMovieでMCを読み込み、その読み込んだMC全てに同じスクリプトを実行させたいならフレームアクション。

最初からステージに同じMCを複数配置し、その全てに個別のスクリプトを実行させたいならクリップアクション。
フレームアクションで全てを別々にコントロールすることもできるがその辺は好みや状況に応じて。

418:Now_loading...774KB
06/01/18 14:42:56 UjxSyQkG
my_str = "名前,1000";
var my_array = my_str.split(",");
my_array[1] += 500;
trace(my_array[1]);

「1500」という結果を期待してこのようなコードを書いたのですが、
「1000500」のように、ストリングスの足し算みたいになってしまいます。
2行目と3行目の間に
Number(my_array[1]);
を追加しても結果は同じでした。

どうかアドバイスをよろしくお願いいたします。

419:Now_loading...774KB
06/01/18 15:02:30 rshw4oq3
Number();は引数自体を変える訳じゃないよ。
戻り値が数値となるわけだかから、元の配列を使いたいなら、
my_array[1] = Number(my_array[1])+500;
な、感じかな。

420:Now_loading...774KB
06/01/18 15:03:52 c2pxWpU+
>>418
my_str = "名前,1000";
var my_array = my_str.split(",");
my_array[1] = Number(my_array[1])+500;
trace(my_array[1]);

my_str = "名前,1000";
var my_array = my_str.split(",");
my_array[1] = Number(my_array[1]);
my_array[1] += 500;
trace(my_array[1]);

421:Now_loading...774KB
06/01/18 15:12:08 UjxSyQkG
>>419
>>420
そういうことだったんですかー!
勉強になりました。
どうもありがとうございました。m(_ _ m)

422:Now_loading...774KB
06/01/18 19:15:30 Tshyp6qg
ソフト=FlashMX2004, OS=Win98SE

2点質問があります
Q1)検索対象のTxt(txt1)があり、テキストフィールド(変数:sw)内に文字列
を入れてtxt1内を検索し、swの位置をtxt1.indexOf(sw)で求めようとしています。
一応成功はしたのですが、swが大文字・小文字に関わらずヒットします。そこで、
例えばABCとAbcを区別して検索する方法がありましたら教えて下さい。

Q2)過去にダイナミックテキストの欄(フォント:MS Pゴシックの24pt)を一旦
作り、これを再利用したのですが、表示される文字が到底24ptとは言えず、どう
見ても10pt位にしか表示されません。欄を拡大すれば解決しましたが、このような
現象はよく発生します。対策がありましたらお教え願います。


423:Now_loading...774KB
06/01/18 19:53:53 p3sIfJbA
>>422
Q2)は変形しちゃってるとか?

424:Now_loading...774KB
06/01/18 20:13:46 rshw4oq3
>>422
大文字小文字に関わらずヒットする例を知りたいが。

425:Now_loading...774KB
06/01/18 21:00:21 1Ws/cuPj
>>422 Q2)

これ俺も苦労したんだよ~。
そのとき調査した結果をコピペしてあげよう。


自由変更ツールやプロパティ入力などでテキストボックスの幅・高さを
変更すると、その比率が文字の幅・高さにかかってしまうようなのだ。

埋め込みナシ → 高さの比率が、文字の大きさにかかる
埋め込みアリ → 幅・高さの比率が文字の幅・高さにかかる


なので、テキストフィールドは、テキストツールでのみしか触らない。
これが鉄則。

426:Now_loading...774KB
06/01/18 21:28:42 XBJIOHcp
>>424
String.toLowerCase()

427:422
06/01/18 22:04:42 ROR1AeF4
>>424 大文字小文字に関わらずヒットする例を知りたいが。

うっ! なんか不安になってきた。Q1)については結果を再確認します。


>>423-426
Thxです。


428:422
06/01/19 04:46:08 dv+Tiuvy
>>424
やっぱり、大文字小文字を識別してヒットしていました。
なのでQ1)はナシです。


429:Now_loading...774KB
06/01/19 16:25:24 Jzk9fXBc
「スタートページに登録ボタン」を作るにはどういう記述をすれば良いのでしょうか。
「お気に入りに追加」ボタンのように

on (release) {
getURL("javascript:window.external.AddFavorite('URL','サイト名')");
}

と簡単にはいかないようで。。

setHomePageをキーワードとしてググると、海外サイト情報ばかりで
下記のような記述が出てきますが理解不能です。

on (release) {
getURL("javascript:void(document.links[0].style.behavior='url(#default#homepage)');void document.links[0].setHomePage('URL/');", "_self", "POST");
}

どなたかお助け下さい。

430:Now_loading...774KB
06/01/19 17:25:58 JHN3ApPc
>>429
javascriptで作れる?
出来たらそれをgetURLするだけ

431:429
06/01/19 19:36:31 Jzk9fXBc
レスありがとうございます。
やってみましたが、動作しません。。。

on (release) {
getURL("javascript:window.style.behavior='url(#default#homepage)'; window.setHomePage('URL')");
}

windowの部分を
window.document.all('ID')
としてもみましたが駄目です。

何がいけないのでしょうか。

432:Now_loading...774KB
06/01/20 01:57:51 feM+MLoz
んな迷惑なボタン作んな。

433:Now_loading...774KB
06/01/20 04:23:00 bvUefkbG
ちょっとはまり気味なので質問させてください。
ゲームを作っているのですが、自キャラと壁の当たり判定をhitTestを使って以下のようにしているのですが

●自キャラ(MC_char)
on(EnterFrame){
 // 右に進む場合
 _root.backup_x = _x;
 _root.backup_rx = _root._x;
 _x += 4;
 _root._x -= 4;
}
●壁(MC_wall)
on(EnterFrame){
 if(this.hitTest(MC_char._x,MC_char._y,true)==true){
   MC_char._x = _root.backup_x;
   _root._x = _root.backup_rx;
 }
※右方向以外の3方向は省略

以前は、ASの実行順番が「壁→自キャラ」になっていました。
そのときは普通に動いていたのですが、
レイヤーの関係で実行順番を「自キャラ→壁」にしたところ、壁に当たった場合、そのままくっついてしまう現象が起きました。orz
(壁に当たった後、壁と逆向きに動いても、hitTestの反応がtrueになり続ける)
なぜこんなことになるのかわかりません。助けてください。

OSはXPで、FLASH8を使っています。

434:Now_loading...774KB
06/01/20 04:29:05 bvUefkbG
追記
_root._xを動かしているのは、自キャラを動かさずに画面スクロールだけさせるためです。

435:329
06/01/20 12:27:21 0tR9PI6j
Flash8でラジオボタンコンポーネントです。
ラジオボタンを押したときに何も出力されないのですが、何が行けないのでしょうか?
よろしくお願いします。

firstValue = radioGroup.getValue();
trace(firstValue);
radioGroup.setChangeHandler("kType");
function kType(){
trace("kType");
}

436:Now_loading...774KB
06/01/20 12:38:22 VUyede4K
>>434
デバッガでステップ実行してみる。
>>435
まずは、RadioButton コンポーネントのヘルプを見て、そこから始めてみそ。


437:Now_loading...774KB
06/01/20 12:50:00 ZoVAQm8e
>>435
var listenerObject:Object = new Object();
listenerObject.click = function(eventObj:Object) {
trace(radioGroup.selectedData);
trace(radioGroup.selection);
};
radioGroup.addEventListener("click", listenerObject);

438:329
06/01/20 14:44:25 0tR9PI6j
click でいいのね。
actionscript辞典もってるんだがこれが古いのかw
ヘルプもみてみます。ありがとうございました。


439:Now_loading...774KB
06/01/20 16:53:38 F+LsHGwA
labelコンポーネントのFontSizeを
ActionScriptで変更するにはどうすればいいんのでしょうか?
「ラベルのインスタンス名」.fontSize = 100;
とかやってみても、変わりません、、
宜しくお願いします。

440:Now_loading...774KB
06/01/20 17:16:17 quY4CN9B
v2コンポーネントなら、
ラベル名.setStyle("fontSize",100)
でどうでしょ

441:Now_loading...774KB
06/01/20 17:34:55 VUyede4K
>>439
コンポーネントの大きさが小さいとか。24とか32でやってみ。

442:Now_loading...774KB
06/01/21 01:42:13 hj7DwfdM

Flash8使ってるのですが、↓ここのサイトの
URLリンク(www.3enhancedesigners.com)
コレをつくったのですが、ボタンを押してもメニューが出てきません

こんな感じのメニューにマウスを乗せるとリンクボタンがスクロールして出てくる物を作りたいのですが
1フレーム目にメニューボタンを置き、2フレーム目以降にスクロールしてるモーションを作り、
適当なところ(15フレーム目くらい)で止めて、
メニューと出て来たリンクボタンからマウスが離れると1フレーム目に戻る物を作りたいのですが、

1フレーム目で、
stop ();
メニューボタンに 
onRollOver{
  this.gotoAndStop(15);
}
2~15フレーム目
何もなし

16フレーム目
stop ();
gotoAndPlay(1);

って、全然だめですよね。初めてAS弄ってみたんですがサッパリ分かりません。
何か良い方法はありませんか?お願いいたします
スレ違いでしたら誘導お願いします。

443:Now_loading...774KB
06/01/21 07:31:16 vSkfT/Nv
>>442
ボタン内部のタイムラインには何も書かなくていいです。
以下のスクリプトをボタンの置いてあるタイムラインに書いてください。

//ボタンの再生を止める。
btn.stop();
//マウスオーバーで2フレーム目から再生
btn.onRollOver = function() {
btn.gotoAndPlay(2);
//1フレームごとに実行
btn.onEnterFrame = function() {
//もし、ボタンの再生フレームが16フレーム目なら・・・
if (btn._currentframe == 16) {
//ボタンの再生を止める。
btn.stop();
//1フレームごとに実行する処理を消去
delete btn.onEnterFrame;
}
};
};

444:443
06/01/21 07:32:08 vSkfT/Nv
続き

/*
//マウスアウトで1フレーム目に徐々に移動するならコメントはずす。
btn.onRollOut = function() {
//1フレームごとに実行
btn.onEnterFrame = function() {
//もし、ボタンの再生フレームが2フレーム目より後なら・・・
if (btn._currentframe>=2) {
//ボタンの再生フレームを1つ前に移動
btn.prevFrame();
} else {
//ボタンの再生フレームが2フレーム目の前なら1フレームごとに実行する処理を消去
delete btn.onEnterFrame;
}
};
};
*/
/*
//マウスアウトで1フレーム目に直ちに強制移動するならコメントはずす。
btn.onRollOut = function() {
btn.gotoAndStop(1);
};
*/


445:442
06/01/21 08:28:05 hj7DwfdM

>>443-444
ASありがとうございます.でもなんかマウスのせなくてもスクロールしちゃって
離れても止まんないです。何が悪いんだろう。。。
ボタンの置いてあるタイムラインってことはレイヤーは違くても大丈夫ですよね?
あと、>>444からは、強制移動する事にしたので
btn.onRollOut = function() {
btn.gotoAndStop(1);
};
だけを>>433に続けて書き込めばいいんですよね?
なんでうまくいかないんだぁorz



446:Now_loading...774KB
06/01/21 08:40:56 vSkfT/Nv
>>445
ボタンのインスタンス名をbtnにすれば大丈夫。
もしくは自分で好きな名前をつけてスクリプトのbtnの部分を書き換えればいいよ。

447:329
06/01/21 10:17:39 nMJfzH3U
Flash8使ってます
ドキュメントプロパティで、背景色やステージサイズを変更できますが、
スクリプトで背景色を変えることって出来るでしょうか?
よろしくお願いします

448:Now_loading...774KB
06/01/21 10:31:10 Y+YcRaM7
>>447
ASでステージの色は変えれない。
MCをステージに配置して色を変える。

449:329
06/01/21 12:24:52 nMJfzH3U
そうでしたか。ありがとうございましたー

450:Now_loading...774KB
06/01/21 12:41:11 83cMkqRe
Flash 8 です。
setPixel32をつかって円を描くことってできますか?

451:Now_loading...774KB
06/01/21 13:00:09 6ohh19kh
>>450
なんでできないと思ったか謎。

452:Now_loading...774KB
06/01/21 14:25:18 Vr9PXI1X
Flash8で、Flash8/ActionScript2.0用にパブリッシュしています。

MXから8に移行したのですが、ビットマップにボカシがかかって汚くなってしまいました。
最低画質に設定すれば良いのですが、それだとベクトルデータの方が汚くなります。
ビットマップは、アニメーションGIFを取り込んで状態で、
各フレームに1枚ずつ配置されたムービークリップです。

どうにかこのムービークリップだけ低画質にする方法はないでしょうか?

453:Now_loading...774KB
06/01/21 16:37:28 hd1EjpQr
>>452
_qualityプロパティはどう?
mc._quality="LOW";
とか


454:Now_loading...774KB
06/01/21 16:41:41 7KXQ3KPw
ソフト=FlashMX2004、 OS=Win98SE

Q)ダイナミックテキストの消去法&書き換え法
テキスト名指定欄(変数:txtName)とダイナミックテキスト欄(変数:txt1)
を用意し、ボタンアクション1として
on (press) {
 System.useCodepage = true;
 this.loadVariables(txtName+".txt");
}

でダイナミックテキスト欄に目的の文章を表示しました。次いで内容をクリア
するため、ボタンアクション2として
on (press) {
 txtName = "";
 txt1 = "";
}

を実行後、新たに別のテキスト名を指定してボタンアクション1を実行すると、
前の文章に新しい文章が後続する形で(連続する形で)表示されます。

そこで質問ですが、新しい文章のみがtxt1の内容になるには、ボタンアクション2
をどのように改造すればいいでしょうか?


455:Now_loading...774KB
06/01/21 17:08:25 Y+YcRaM7
>>454
どうやってダイナミックテキストに表示してる?
読み込んだ値入れるときに+=とか使ってない?

456:Now_loading...774KB
06/01/21 17:41:37 CU/7IwhG
URLリンク(www.gotoandplay.it)

↑にあるヤツなんですけど、
誰か原理わかる人います?
91から127行目が意味不明なんですよ。

特に、

var p1rx = dy * sin + dx * cos + p0x;

この式とか。何を求めてるのかわからない。
公式があるなら、その名前だけでもわかれば…
お願いします。

ちなみにflaファイルは
「Download the source code of this prototype」
のリンクから手に入ります。



457:Now_loading...774KB
06/01/21 17:45:09 sJb6YObF
>>454
URLリンク(hakuhin.hp.infoseek.co.jp)
こいつがまさに、テキストファイルの内容を読み込んでダイナミックテキストで表示させる
ってことをやってるので、このサンプルを落としていろいろ調べてみたら?

458:452
06/01/21 18:31:41 Vr9PXI1X
>453
その方法だと、個々のムービークリップに対して実行しても全体の画質が変わってしまいます。

459:Now_loading...774KB
06/01/21 18:45:12 sJb6YObF
>>452
URLリンク(hakuhin.hp.infoseek.co.jp)
こいつじゃ解決しないかね?

460:Now_loading...774KB
06/01/21 18:47:40 s36pct3j
Flash8使ってます

onClipEvent (enterFrame) {
if(Key.getCode()==27){
_root.gotoAndPlay("kekka");
}
}
Escキーを押すと「kekka」画面にいくようにしたいのですが
2004でやったときとういかplayer7でパブリッシュしたときにはちゃんと実行
させるのですが
8でやるとキーを押しても画面が変わりません
どうすればよいでしょうか?

461:454
06/01/21 19:17:04 BwOdtkQg
>>455
+=は使っていないです。

>>457
import_00_fla6.fla を参考に、System.useCodepage = true; を
メインレイヤーのタイムライン1に移動しましたが効果はありませんでした。


462:Now_loading...774KB
06/01/21 19:31:55 gvJGwzoM
>>461
テキストフィールドに変数を使うのを止める。
textプロパティを使う。
おそらくそれで解決する。

あとね、MC.loadVariables()は使わずに、LoadVarsオブジェクトを使うといいよ。


463:Now_loading...774KB
06/01/21 19:38:51 Y+YcRaM7
>>461
読み込むテキストの中身どうなってる?

464:456
06/01/21 21:40:23 CU/7IwhG
なんかそれっぽい解説を見つけました。
URLリンク(www.dango-itimi.com)

これで何とか解読できそうだ…

465:452
06/01/21 23:41:36 Vr9PXI1X
>459
この絵では目立たないんですが、100%の表示が乱れてしまいます。
スムージングも切って、開発環境では普通に見えるんですが、実行すると駄目です。

466:454&461
06/01/22 00:38:03 e9qsMUsM
>>462 textプロパティを使う。 LoadVarsオブジェクトを使うといいよ。

ありがとうございます。試してみます。


>>463 読み込むテキストの中身どうなってる?

ダイナミックテキスト欄の変数がtxt1なので、単に txt1=文章・・・文章
です。文章の最後は//で終わっています。


467:Now_loading...774KB
06/01/22 01:43:34 xpSVgq5+
ASでコメントを書いてるとだんだん表示がおかしくなってくる
半角文字うった後に全角文字をうつと前の半角の文字が消える(半角文字が全角文字に隠れる)
多分フォントの設定なんでしょうけど、フォントを変えてもなかなか解決しません。
解決方法を教えてください

468:454&461
06/01/22 02:17:24 a4o5WvHV
(ダイナミックテキストの消去法&書き換え法 の続き)

>>462さんのアドバイスを元に下の様にしました。まず、フレーム  
アクションは
System.useCodepage = true;
loadV = new LoadVars();  //オブジェクトloadVの宣言
loadV.onLoad = function() {
 txt1_ins.text = loadV.text;  //txt1_insはダイナミックテキストのインスタンス
};

として、読み込みのボタンアクションは
on (press) {
 loadV.load(txtName+".txt");
}

です。 
テキスト名を指定し、読み込みボタンを押しましたが、今度は何も表示
されません。間違いをご指摘願います。


469:Now_loading...774KB
06/01/22 02:46:18 sNTojt3u
>>468
txt1_ins.text=loadV.txt1;じゃないかな。traceしてみるとどこが悪いかわかるよ。

470:Now_loading...774KB
06/01/22 02:55:31 8SxJnqHY
>>468
>>466の通りなら読み込んだテキストにtextっていう変数ないんじゃない?
そうでないならターゲットが違うとか?
問題あった時はtrace()入れてどこで躓いてるかチェックするといいよ。

471:454&461
06/01/22 03:51:30 a4o5WvHV
>>469, 470
そうだ、困った時にはtrace()だ


472:Now_loading...774KB
06/01/22 16:30:07 i5vHY3HW
loadMovieで読み込んだ画像を
BitmapDataとして扱うにはどうしたら良いのでしょうか?

473:Now_loading...774KB
06/01/23 01:02:52 JhiNYLc9
draw

474:454&461
06/01/23 01:21:42 QtLWtaJx
(ダイナミックテキストの消去法&書き換え法 の続き -2)

>>469, 470 さんの指摘を元に以下の様にしたところ、ボタンアクション1で表示
されるようになりました。しかし、一旦ボタンアクション2で消して再度テキスト
を指定すると、前の文章に付け加えられる形で表示されます。

フレームアクション
System.useCodepage = true;
loadV = new LoadVars();  //オブジェクトloadVの宣言
loadV.onLoad = function() {
 txt1_ins.text = loadV.txt1;
 trace("loadV.text= "+txt1_ins.text);  // loadV.txt1のチェック
};

ボタンアクション1(表示)
on (press) {
 loadV.load(txtName+".txt");
}

ボタンアクション2(消去)
on (press) {
 txtName = "";
 txt1 = "";
 txt1_ins.text = undefined;
 trace("txt1_ins.text= "+txt1_ins.text);  //txt1_ins.textのチェック
}

ボタンアクション2では、txt1_ins.textのチェックのtraceでは中身無し
になっています。後続されるというのは、消し方に問題があるのでしょうか?
(ボタンアクション2のASに問題あり?) 間違いをご指摘願います。


475:Now_loading...774KB
06/01/23 01:51:50 Ha7Ze9Qo
>>474
そのASでやってみたけど、問題なかった。
ボタン1を何回も押したらどうなる?
txtNameの値を変えなかったらどうなる?
テキストの中身をtxt1=a とか簡単なヤツにしたりしてみれば?
もぅflaをupしちゃえば??

476:Now_loading...774KB
06/01/23 09:51:48 9ms0b4Uj
>>475同様、問題なかった。
ちなみにTEST時のスクリプトは以下。
/*
test_text.txtの記載内容
txt1=これはテストです。
*/
System.useCodepage = true;
txtName = "test_text";
loadV = new LoadVars();
loadV.onLoad = function() {
txt1_ins.text = loadV.txt1;
trace("txt1_ins.text= "+txt1_ins.text);
};
//ボタンアクション1(表示)ボタンインスタンス名btn1
this.btn1.onPress = function() {
loadV.load(txtName+".txt");
};
//ボタンアクション2(消去)ボタンインスタンス名btn2
this.btn2.onPress = function() {
txt1_ins.text = undefined;
trace("txt1_ins.text= "+txt1_ins.text);
};

477:Now_loading...774KB
06/01/23 13:37:04 20vU18q1
FLASH8のフィルター機能って、loadMovieで読み込んだ外部画像にも適用できますか?


478:Now_loading...774KB
06/01/23 13:55:50 kpILgMti
>>477
コンテナMCにloadMovieする子MCを作って、フィルターはコンテナの方に
かければいけると思う。


479:Now_loading...774KB
06/01/23 15:34:01 20vU18q1
>>478
解決しました!ありがとうございます。
読み込むMCにかけてました。

480:Now_loading...774KB
06/01/23 16:06:48 JHqkRrq+
Flash 8 Pro
Windows XP

ムービークリップのプロパティにあるカラー:明度を
アクションスクリプトから変更するにはどうすればよいのでしょうか?
よろしくお願いします。

481:454&461
06/01/23 16:16:55 qls9NSfY
>>475, 476
うーん、何でだろう。消すことは可能なのですが、前の文章が居座っています。
どっかに余計スクリプトがないかチェックしてみます。


482:Now_loading...774KB
06/01/23 18:07:17 TI/Fuquq
ソフト: FlashMX2004
課題: MCを線上に配置させる

インスタンスXY(描画エリア)で、線の定義を 
_root.XY.lineStyle(2, 0x0000ff, 100); として

_root.XY.onEnterFrame = function() {
  x++;
  rX = x*3;
  rY = -nrt*3/x;  //線の関数。nrtは変数(例:100)
  _root.XY.lineTo(rX, rY);
};

で線を描き、MC(例えば▲マーク)をこの線上のみで移動できるようにしたいと
思っています。←モーショントゥイーンの線に沿って移動する感じ

このようなことは可能でしょうか? なお、MCが配置される線は関数で与えられる
ので、モーショントゥイーンであらかじめ線を固定するのは不可です。


483:Now_loading...774KB
06/01/23 18:26:09 KBKtdLZX
ソフト:Flash8(Pro)
OS:WindowsXP

txt外部読み込みの外部変数を使って
URLを取得して、クリックすると
その外部変数に代入したURLに飛べるようにしたいのですが、
下のASじゃだめでした。
on (release) {
getURL("_root.url", "_blank");//_root.urlはURLが代入された外部変数
}

txt
&url=URLリンク(.......)
となっています。問題はなさそうなのですが…
何がおかしいのか分かりません。教えてください!
よろしくお願いします。

484:Now_loading...774KB
06/01/23 18:39:24 9ms0b4Uj
>>482
課題って・・・宿題なら自分でやんなきゃだめだよ。

>>483
変数名はurltextに変更して、
getURL(_root.urltext , "_blank");

485:482
06/01/23 18:45:31 g47s+8gr
>>484
いや、宿題の意味の「課題」じゃなくて。。。。 
それでは、書き替えます

目標: MCを線上に配置させる


486:Now_loading...774KB
06/01/23 18:47:04 KBKtdLZX
>>484
無理でつたorz
一様変数は外部読み込みでつ。
テキストには
&url=URLリンク(.......)
が記述されていて、
URLが記述されている外部からの読み込み変数を使って
表示された所を押すとそのURLに飛べるのです。
必要ならばflaUPします。

487:Now_loading...774KB
06/01/23 18:51:32 9ms0b4Uj
いや外部テキストに記述してる変数名も変えてやってみてくれない?
たしかurlってのはプロパティかなんかであったような気がしたから避けたほうがいいかと思う。

488:482
06/01/23 19:55:32 VgdCWAyZ
すみません、482にアドバイス頂けますか?


489:Now_loading...774KB
06/01/23 20:15:08 9ms0b4Uj
>>488
できるよ。
普通にhitTestでカーソル動かせばいい。
そこまで書けたなら後はヘルプみながらでも
ネットで調べても作れるでしょ。

490:482&488
06/01/23 21:29:31 PPecvHpm
>>489 
すみません、hitTestとカーソルの関係が分かりません。
カーソルとは文字入力のカーソルとは違うのですか?


491:Now_loading...774KB
06/01/23 21:42:34 mqIfdKdK
>>483
変数は「"」で囲ってはだめ。
trace(_root.url)で読み込んだ値が正しいか確認。

492:Now_loading...774KB
06/01/23 22:34:22 mqIfdKdK
>>482
rX = x*3;
rY = -nrt*3/x; の2つの式を変形させて
Y = -_root.nrt*3/(X/3);とする
▲をマウスで動かしたときのx座標をXに代入すれば
Yが求まるからYを▲のy座標として代入する。
つまり▲を左右に動かしたらy座標が勝手に決まるから線上を動くことになるんでない?

493:Now_loading...774KB
06/01/23 23:02:32 kpILgMti
>>490
関数がわかってるなら、そのまま線引けばいいし、そのままMCの座標きめれば
いいのでは?
媒介変数xの境界条件(どっからどこまで)とかは注意だけど。
特に初期値とか、割り算絡んだときの0除算とか要注意。

494:Now_loading...774KB
06/01/23 23:08:45 UaLoiz2K
#include で読み込んだ外部asファイルにブレークポイントを置いてデバッグすることってできないのでしょうか?

495:482&488
06/01/23 23:20:19 PPecvHpm
>>492, 493
Thxです。やってみます。

あー、痰が絡んで喉が痛い。。。。


496:Now_loading...774KB
06/01/23 23:20:40 kpILgMti
>>494
外部asファイルを読み込んで、ブレークポイントつけるとか。

497:Now_loading...774KB
06/01/23 23:21:41 kpILgMti
>>495
私も鼻水ずるずるです、風邪気をつけなきゃね。

498:482&488
06/01/23 23:32:20 PPecvHpm
>>497
鼻炎持ちですが、鼻水止めに「ナザールブロック(佐藤製薬)」(←薬局のお勧め)を
使っています。
点鼻薬は、ここ1~2時間だけでも鼻水を止めたい!時に便利。
(スレ本題とは関係無いですがカキコ)


499:494
06/01/23 23:33:32 UaLoiz2K
>>496
それって、アクションウィンドウの右上から、「スクリプトの読込み」ってやるってことですよね?

外部asファイルにしたいのは、「編集中はFlashMXのくそエディタから解放されたい」というのが
あるから、それだと読込み・書き出しを何度もしなくちゃならなくてイマイチ……。

500:Now_loading...774KB
06/01/23 23:41:35 kpILgMti
>>499
デバッガ使う場合って、ホントにわかんないときだからなあ。
全部のas読まなくても、該当するas読み込んでブレークポイント付けて
元flaでムービーデバッグでそこでとまらないか?

501:Now_loading...774KB
06/01/23 23:42:28 kpILgMti
あ、ごめん、ファイル-->開く、ね。

502:494
06/01/23 23:59:03 UaLoiz2K
ファイル-->開く で開いたasファイルにはブレークポイントつけらんないっぽいです。

503:Now_loading...774KB
06/01/24 00:12:24 gnTcnWWs
>>502
8ならできるんだが、うーんmxだとわからん、スマン。

504:494
06/01/24 00:28:07 Th+G6CKf
がーん。8ならできるんすかー。
残念……。
ゲーム系作ってて、俺自身のFlash暦は短いせいでブレークポイントは
使いまくりなので、外部編集はあきらめます……。

505:Now_loading...774KB
06/01/24 00:37:39 Q3Wp9ZOe
XPathを使うためにDataBindingClassesをインポートしたA.swfを
B.swfにてloadMovieすると、インポートしたクラスがうまく動かないようです。
A.swf単体で動作させたときに正常に動作することは確認しました。

どなたかアドバイスをよろしくお願いいたします。

506:Now_loading...774KB
06/01/24 00:45:51 Q3Wp9ZOe
書き忘れましたが、B.swfでも同じクラスをライブラリに追加し、importしています。

507:Now_loading...774KB
06/01/24 01:05:55 9Hd9wWbU
flash8Basicで作ってます。
テキストをムービークリップに変換し、
スペースキーで表示非表示を切り替えたいです。

onClipEvent (keyDown) {
checkCnt = 1-checkCnt;
if (checkCnt == 1 && Key.isDown(Key.SPACE)) {
_root.txt._visible = false;
} else if (checkCnt == 0 && Key.isDown(Key.SPACE)) {
_root.txt._visible = true;
}
}

目的のムービークリップのインスタンスに対し
上のようなスクリプトを置きましたが、
どうも反応しません。どうしたらよいでしょうか。

508:Now_loading...774KB
06/01/24 01:11:23 CpU7c7id
>>507
試してないけど
onClipEvent (keyDown) {
if ( Key.isDown(Key.SPACE)) {
_root.txt._visible = !_root.txt._visible;
}
}

509:Now_loading...774KB
06/01/24 04:59:47 odfk2TaF
FlashMXです。
いくつかの子MCを持つ親MCがあったとして、子MCもろとも
重なり順が変わる事を期待して親MC.swapDepths(数字)
しましたが思った通りになりません。そういう仕様なんでしょうか?

入れ子状態なMCをひとかたまりと見なして深度を管理する良い
方法がありましたら教えて下さい。

510:507
06/01/24 06:46:58 9Hd9wWbU
>>508
できました!ありがとうございました。
感謝します。顔謝します。

511:Now_loading...774KB
06/01/24 07:21:27 gnTcnWWs
>>509
for inで子MC個々に変えるぐらいしか思いつかないな。
子MCがindexで参照できるならそっちを使って。
いずれにしても、一気に変えるときは他のMCとの競合に注意だね。

512:Now_loading...774KB
06/01/24 07:37:48 jx8ldrEJ
質問、とは少し違うのですが。
いままで他の言語(C等)を使っていてASは初めてなのですが
on~ = function(){・・・}
が、手軽にタスク処理なんかを増やせるのですごい重宝しています。
そしてASに興味が出てきました。
こういったASならではのおすすめの使いがってのある方式って他にないでしょうか?
当方、MX2004を使っています。

513:Now_loading...774KB
06/01/24 08:01:39 laWMHRpg
>>512
ASならではかどうか知らないけど、
リスナーとかどうだろう。

someListener = new Object();
someListener.onKeyDown = function () {
if(Key.isDown(Key.UP)){ MC._y -= 1 };
if(Key.isDown(Key.DOWN)){ MC._y += 1 };
if(Key.isDown(Key.LEFT)){ MC._x -= 1 };
if(Key.isDown(Key.RIGHT)){ MC._x += 1 };
};
Key.addListener(someListener);

514:Now_loading...774KB
06/01/24 09:10:38 Jpw0UGXi
>>506
URLリンク(oshige.com)
ここの _root という項目の記述が参考になるんじゃないかと思う。

これが関係なかったら、そっから改めてDataBindingClassesとやらの
挙動について調べればいいんじゃないかな。

515:Now_loading...774KB
06/01/24 10:23:59 gnTcnWWs
>>508
スレリンク(swf板:338番)

516:Now_loading...774KB
06/01/24 10:35:00 Jpw0UGXi
下らんことを蒸し返さなくていいよ。

517:Now_loading...774KB
06/01/24 10:36:10 gnTcnWWs
>>506
ここらへんも参考になるかも。要はlockrootいれとけみたいな。
URLリンク(livedocs.macromedia.com)


518:Now_loading...774KB
06/01/24 10:38:05 gnTcnWWs
>>516
うん、蒸し返すつもりは無いけど、いきなりこっちに来てってやられるとな。

519:Now_loading...774KB
06/01/24 11:25:02 Q3Wp9ZOe
>>514
>>517
ありがとうございます。

というか、検証してたらそもそもクラスの問題ではなく、A.swfのルートで宣言した配列が
B.swfにloadMovieするとundefinedになるようでした。
教えていただいた情報を頼りに_lockrootを設定したのですが、
なかなかうまくいきません。
なんでだろ。

520:Now_loading...774KB
06/01/24 12:03:09 gnTcnWWs
>>519
_global

521:329
06/01/24 12:26:55 zfxLHnoc
Flash8です。
ダイナミックテキストフィールドに1~10桁の数字をランダムに表示していますが、
桁が増えるとテキストフィールドに入りきりません。
フォントのサイズを自動で変更したいのですがよい方法はあるでしょうか?

今やっているのは、
2桁の場合→サイズ30
3桁の場合→サイズ32
と、予め決めています。

522:Now_loading...774KB
06/01/24 12:27:18 Q3Wp9ZOe
新しい発見をした。
A.swfでloadしたXMLが、B.swfの中で再生されると文字化けしてしまう。
コレが原因だった。

<A.swf>
doc = new XML();
doc.load("URLリンク(www.example.com)");
doc.onLoad = function(success) {
trace(doc.toString);//←問題ナス
}

<B.swf>
dummy_mc.loadMovie("URLリンク(www.example.com)");//←ここでは文字化けXMLがtraceされる。

このトラブルって結構ありそうだけど、ググっても見つかりません。
アドバイスよろしくお願いいたします。

523:329
06/01/24 12:28:08 zfxLHnoc
↑ よろしくお願いします。

524:Now_loading...774KB
06/01/24 13:12:27 Jpw0UGXi
>>522
俺も似たようなことをやっているので気になって確かめてみたが、
俺のローカル環境ではそれをやっても文字化けはおきなかった。
多少相対パスが怪しい状況にしてても問題なかった。
おまえさんも、まずは3ファイルをローカルの同一フォルダにおいてる状況から
確認してみたらどうだ?

ちなみに、A.swfにあたる俺のファイルには、

System.useCodepage = true;

を書いている。

525:Now_loading...774KB
06/01/24 13:25:42 Jpw0UGXi
>>521

field.txt = 123;// まあなんか数字をセットする

ln = field.txt.toString().length;// 桁数

size = 20;// デフォ
if (ln == 2) size = 30;
if (ln == 3) size = 32;// 桁数に応じてサイズ値を変更。

tf = new TextFormat();
tf.size = size;
field.setTextFormat(tf);// フォントサイズを設定。

こんな感じでええんじゃないの?

526:329
06/01/24 13:53:23 zfxLHnoc
>525
そうそう、今はこの仕様にしてるんです。
1桁増える毎に、一定ピクセル増加する用に直してみます
スクリプトありがとうございました





527:Now_loading...774KB
06/01/24 14:20:59 JzRbj6ax
>>511
ありがとうございました。for in調べてみます。

528:480
06/01/24 16:09:01 7YgpZGrn
マニュアルを調べてのですがやっぱりわかりませんでした。

この処理はアクションスクリプトではできないのでしょうか?
よろしくお願いします。



529:Now_loading...774KB
06/01/24 16:15:05 gnTcnWWs
>>528
rgbで明度といわれても困る。透明度なら_alphaを変えればいい。
hsv色空間での明度ということなら、hsv<-->rgb変換しないとできんがな。

530:Now_loading...774KB
06/01/24 17:45:58 Y/xz5k5f
>>528
アクションスクリプトで明度は変更可能

rgbのパーセントとオフセットの明度との関係知ってる?
まぁ簡単だから調べてみ
あとは簡単。ASで明度を計算しちゃいましょう

1、colorオブジェクト作る
2、指定した明度に対応する拡張効果(ra,rb,ga,gb,ab,bb)を出力する関数でも作る
3、setTransformでMCに色を設定して完了だ

ちなみに前の色からだんだんと明度を変化させたいとかなら
getTransformでMCの色の拡張効果を取得出来るからそれ使う



531:Now_loading...774KB
06/01/24 20:12:02 7YgpZGrn
>>529
>>530
ありがとうございました。
MCの色を変更するのでMovieClipクラスのメソッドやプロパティ
ばかり調べていました。

colorオブジェクト使用すればできました。

ありがとうございました。

532:Now_loading...774KB
06/01/24 21:11:48 Q3Wp9ZOe
>>524
ありがとうございます。
System.useCodepage = true; 関係で何かエラーが起きてたようです。

話が相当ややこしくなるのではしょりますが、
System.useCodepage = true;を書くところによって文字化けが起こったり直ったりするので
loadMovieでいろんなswfを読み込むときは、記述の位置を試行錯誤しようという教訓を得ました。
文字エンコード関係はホントややこしいわよね。

533:482&488
06/01/25 11:56:00 5hSmhNFE
目標: MCを線上に配置させる

→ 成功しました。ありがとうございます。


534:Now_loading...774KB
06/01/25 15:46:50 K0gGqMvE
質問させていただきます。
当方の環境MX2004です。
ムービークリップにloadMovieでswfを読み込むと
swf側のNOWLODINGが一瞬表示されるだけで機能しません。
どなたか助けてくださいorz


535:Now_loading...774KB
06/01/25 17:24:35 iczYMn2K
>>534
あんたマルチしまくりだな。ひどいぞ。

536:Now_loading...774KB
06/01/25 18:56:31 9sp8tSXj
教えてくれ 10進数、もしくは16進数から2進数への変換方法を!

parseIntで10進数に変換するってのは調べた=3

537:Now_loading...774KB
06/01/25 19:02:17 u9QqE4h7
toString

538:Now_loading...774KB
06/01/25 19:12:30 UZO7kIso
>>536
ほれ
aa=0xFF;
trace(aa.toString(16));
trace(aa.toString(8));
trace(aa.toString(2));

539:Now_loading...774KB
06/01/25 19:13:09 UZO7kIso
あ、かぶった、スマン。

540:Now_loading...774KB
06/01/25 19:15:55 9sp8tSXj
わかりません 先生!

541:Now_loading...774KB
06/01/25 19:18:45 9sp8tSXj
わかりました 先生! てかtoStoringでヘルプ見てもそんなの載ってなかったお
まくろめでぃあ氏ね! そして先生方ありがとう!

542:Now_loading...774KB
06/01/26 00:24:15 +mrvpoC6
AS使えてる人に質問~。
attachやduplicateでMC増やしたり、new でオブジェクトとか増やしたときに
消さないでそのまま放置でハングったことある?
やっぱり作ったものはちゃんとremoveなりdeleteなりしてますか?

543:Now_loading...774KB
06/01/26 00:34:31 Yf+Pxeiw
いらなくなったら消すよ

544:Now_loading...774KB
06/01/26 00:49:23 312438en
>>542
やってみりゃわかるけど増やし続ければハングするよ。

545:Now_loading...774KB
06/01/26 09:13:57 88xo8NKH
>>544 消さないで 同じ名前で別のMCを上書きし続けるってのは大丈夫だよね?

546:Now_loading...774KB
06/01/26 10:29:03 +mrvpoC6
>>513
ちょい亀レス。
レスサンクスです。
リスナーですね。調べて見ます^^

547:Now_loading...774KB
06/01/26 13:06:05 Tgdu1VHj
初めて質問させて頂きます。
当方の環境はFLASH MX2004です。
Webサイト作成中です。ボタンを押して別のシーンに飛ばすのですが、
飛ぶ前に元の画面のメニュー以外をゆっくり暗くしていって最終的に真っ暗になってから次のページにいかせたいのですが、うまくいきません。
ちなみにその元のページは静止していなくてモーショントゥイーンで動いています。
アドバイスお願いいたします。

548:Now_loading...774KB
06/01/26 13:20:33 bx32ds5D
>>547
具体的にどうやっていて、どのように意図と食い違っているのかを書かんと
「暗くなってから、移動させれば?」くらいしか言えん。


549:Now_loading...774KB
06/01/26 14:52:49 7QU2toIt
>>547
ボタンを押した時に変数を設定
と同時に、黒いシンボルのアルファ値が徐々に上がるアニメーションを再生
真っ黒になった瞬間に変数先にジャンプ

たぶんコレが一番簡単

550:Now_loading...774KB
06/01/26 15:53:38 hEomt5h2
>>547
使いやすいかどうかは分からないけど自分のやり方
フェードアウトしたいサイズに黒四角を作成してムービークリップシンボルにする
そのMC内で更に黒四角をグラフィックシンボルにしてアルファ0→100のモーショントゥイーンを作成(フレームの長さは任意)
最後のフレーム(別レイヤー)をキーフレームにして
_root.func() //実行したいコマンド
this.removeMovieClip();
と入れる

次にそのMCをリンケージでfoutとでも名付け、フェードアウトに入るタイミングで
attachMovie("fout","fout",100)を実行
//100(深度)はフェードアウト部分にattachで作成したMCがある場合そのMCの深度よりは大きくする
これでフェードアウト→ページ飛び?を処理させてます

その他MC内部を更にMCにして黒、白と四角の色を変えて黒フェードアウト、白フェードアウトとかやってます

551:Now_loading...774KB
06/01/26 16:41:54 Tgdu1VHj
>>550
ボタンには何も書かなくて良いのでしょうか?

552:Now_loading...774KB
06/01/26 19:59:18 8HrhqJ0k
>>547
function fadeout() {
xmin = 0; //暗くしたい画面領域のX座標左上隅位置
ymin = 30; //暗くしたい画面領域のY座標左上隅位置
xmax = 500; //暗くしたい画面領域のX座標右下隅位置
ymax = 400; //暗くしたい画面領域のY座標右下隅位置
alphaNum = 0;
_root.onEnterFrame = function() {
alphaNum += 5;
_root.createEmptyMovieClip("fadeoutMC", 100);
with (_root.fadeoutMC) {
beginFill(0x000000, alphaNum);
lineStyle(1, 0x000000, alphaNum);
moveTo(xmin, ymin);
lineTo(xmax, ymin);
lineTo(xmax, ymax);
lineTo(xmin, ymax);
lineTo(xmin, ymin);
endFill();
}
if (alphaNum>=100) {
delete _root.onEnterFrame;
_root.fadeoutMC.clear();
}
};
}
//ボタンの設定
btn1.onRelease = function() {
fadeout();
_root.gotoAndPlay("movie1");
};

553:Now_loading...774KB
06/01/26 20:57:12 dOUQFa58
ソフト:FlashMX2004_ver7.2

ドラッグした場合、曲線のMC(インスタンス名:clnAB)の上を動く(常に
曲線上にある)MC(このインスタンス名:point)のASを書いています。

これは、clnABからある程度離れたら元に戻れば良いと思い、pointイン
スタンスのASとして下を試しましたが、これではclnABの中心からの距
離の評価になってしまいます。

onClipEvent (enterFrame) {
 this.onPress = function() {
  this.startDrag();
 };
 this.onRelease = function() {
  this.stopDrag();
 };
 if (this._x-_root.clnAB._x>10 || this._y-_root.clnAB._y>10) {
    this._x = _root.clnAB._x;
    this._y = _root.clnAB._y;
 }
}

どのように改造すればいいでしょうか?


554:Now_loading...774KB
06/01/26 22:03:01 i0S1PFf5
>>553
どうなるのが正解かわからないけど、
onEnterFrameの中にonPress,onReleaseを書く必要はないと思う。

555:553
06/01/27 01:47:50 sfKB1Tk0
>>554
onPress,onReleaseは、_rootのフレームアクションとして外に出しました。

本題の方はどうでしょうか? hitTest()で、曲線MCに付いているかどうかを監視
する手を考えましたが、元に戻す時の動き幅を固定することになるので、これは
断念しました。
アドバイス願います。


556:Now_loading...774KB
06/01/27 01:59:13 H+cnbsDq
>>555
曲線MCじゃなくて曲線を2次関数なり3次関数なり数式にしないとダメじゃないかな?

557:553
06/01/27 03:44:39 sLg7KNw3
>>556 数式にしないとダメじゃないかな?

う~ん、数式の場合は、前に試して(482&488&533)成功しているのですが、
今回は前回の様にパラメーター毎にグラフを描画するのではなく、形を固定
したいと思っています。
固定する理由は、同様のグラフが他に隣接して3つあり(曲線4つでループを
形成している)、数式よりは見やすさやループの形のもっともらしさを優先す
るため、「線を変形したもの」に吸着するようにしたいと思っています。

どないでしょう?


558:Now_loading...774KB
06/01/27 11:13:01 2rZt3eLW
>>552 それをいったいどこに書けばいいの?orz
ボタンに書いたらエラーばっかだし...

559:Now_loading...774KB
06/01/27 12:04:59 hzYL/063
質問です。
自作クラス内のLoadVarsクラスで読み込んだ外部ファイルの値を、
自作クラスのプロパティに入れたいのですが、どのような方法があるのでしょうか。

class Hoge{
 var my_lv:LoadVars;
 function Hoge(){
  my_lv = new LoadVars();
  my_lv.onLoad = function(success) {
  if (success) {
   var hoge_a = this.a;//これをHogeのプロパティにしたい
   }
  }
 //呼んだら読み込むメソッド
 function load_lv(){
 my_lv.load(test.txt);
 }
}

560:Now_loading...774KB
06/01/27 13:29:04 R4Uk9N/d
こんな?

class Hoge {
 var my_lv:LoadVars;
 var _a:String;
 function Hoge() {
  my_lv = new LoadVars();
  my_lv._parent = this; //ここで親クラスへの参照をセット
  my_lv.onLoad = function(success) {
   if (success) {
    this._parent._a = this.a; //親クラスの値を変更
   }
  };
 }
//呼んだら読み込むメソッド
 function load_lv() {
  my_lv.load("test.txt");
 }
}

561:Now_loading...774KB
06/01/27 13:31:04 GTN6YSVG
外部テキストを使用するswfを同時に2つloadMovieする場合、
System.useCodePage = true;
を両方のswfに記述してあっても大丈夫でしょうか?
それとも片方だけで良いのかな?

ヘルプには「useCodePageは1スクリプトに1回までを推奨」とあるのですが、
loadMovieしてる場合はどうなるのでしょうか。

562:Now_loading...774KB
06/01/27 13:36:48 R4Uk9N/d
両方に書かないで読み込む親のムービーに書けって事じゃない?


563:Now_loading...774KB
06/01/27 14:12:10 GTN6YSVG
>>562
親のムービーに書くこともしたのですが、
どうやらuseCodePageが有効にならないようで、文字化けしてしまいます。
そういう仕様なんですかねえ。

564:Now_loading...774KB
06/01/27 16:11:49 R4Uk9N/d
そんな馬鹿な仕様にするわけないっしょ。
こっちで試してみたら親の最初のコードとして書くだけで良かったよ。
読み込まれる側で「useCodepage」(「useCodePage」じゃ駄目だよ)
を検索してみればどこかで変更してるところあるんじゃないのかな。

565:Now_loading...774KB
06/01/27 16:45:05 0pMEv5bl
>>564
ちょ、おま、
○:useCodepage
×:useCodePage
の違いに気づいてるのに、なんで「どこかで変更してるところあるんじゃないのか」なんて
トボけた指摘してんだよ。
どう考えても、Pの大小のせいで、意図どおり設定がされてなかっただけだろ!

566:Now_loading...774KB
06/01/27 17:33:25 Amg9P5ex
スコアー計算で、小数がついてしまうことがあるのですが、
これを四捨五入等として整数に直す方法とかあるんですかね?
あったら教えてください。(四捨五入じゃなくても結構です)


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