ActionScript 誰かが物凄い勢いで貝等するスレ 7
1 :
Now_loading...774KB :
2005/05/11(水) 22:59:33 ID:z2tBkeIT
直径2〜3センチ前後の干貝が欲しいのですが、 どこに行けば買えるのでしょうか?
あさりの貝柱が上手く取れないのですが、 どうやれば上手く取れますでしょうか?
>>7 素早いレスありがとうございます。〆切が迫っていたので大変助かりました。
貝の裏をこちょこちょやるといいんですね。
これからは貝柱も残さずに食べます。
2つのmcを交互に跳ねさせたいのですが onClipEvent (enterFrame) { g = -15; e = 0; dt = 0.3; y = 0; vy = 0; } onClipEvent (load) { y2 = 300; vy2 = 0; } onClipEvent (enterFrame) { vy2 = vy2+g*dt; y2 = y2-vy2*dt; if (y2>300) { y2 = 300; vy2 = vy2*-e; } _y = y2; } onClipEvent (load) { vy2 = 80; } というふうに今記しています。 これからもう一つの方のmcに変数を渡す方法が良くわからないのですが 何方か宜しくお願いします。
>>9 (・∀・)出来た。
onClipEvent (load) {
//↓動かすMCの名前をセテーイ。
name_array = new Array("mc1", "mc2", "mc3");
current_mc = 0;
g = -15;
dt = 0.3;
int_y = _y;
initialize();
function initialize(){
vy = 80;
fi = vy/5;
y = int_y-fi;
}
}
onClipEvent (enterFrame) {
if (y>int_y-fi) {
initialize();
_parent[name_array[current_mc]]._y = int_y;
if(current_mc<name_array.length-1){current_mc+=1;}else{current_mc=0;}
} else {
vy += g*dt;
y -= vy*dt;
_parent[name_array[current_mc]]._y = y;
}
}
11 :
9 :2005/05/13(金) 02:42:28 ID:VFBK08VB
12 :
Now_loading...774KB :2005/05/14(土) 15:22:46 ID:OMeK1T8g
FlashMX2004Pro / WindowsXPを使用しているものです。 scrollpane内に読み込んだムービークリップを停止させるにはどうすればよいのでしょうか? this._parent.scrollcontent.stop(); ↑scrollpane内に読み込んだMCのリンケージ識別子 などと書いたり this.parent.ScrollPane.scrollcontent.stop(); ↑scrollpane内に読み込んだMCのリンケージ識別子 などと試しているのですが、うまくいきません。 どなたか知恵を貸してください。
>>12 _root.scrollpane.content.stop() で止めれます。
14 :
Now_loading...774KB :2005/05/14(土) 16:49:13 ID:OMeK1T8g
>>13 12です、止まりました!!
ありがとうございます、この指定方法を使えばgotoAndStop(1);なども全て動きました。
質問ですがあるMCに onClipEvent (enterFrame) { if (_root.MC == null) { _root.C = 0; } else { _root.C = 1; } と書いたんですが 実際に存在してるはずなのに 反応しません 教えてエロい人
trace(_root.MC)のがよくない?
19 :
16 :2005/05/15(日) 10:39:45 ID:XrHk64YI
>>17-18 試してみましたが反応しません。
MCはボタンを押すと現れて、上に飛んでいくようになってます
もしかして不可視にしてたMCは可視にしても反応しないとか
不可視のときは、そのMCのASは動いていないよ _alpha=0ならば動く。負荷になるけど。
_visible=false; の方がよくなくなくない?
>>20 むちゃくちゃなレスだな。なんで、ASが止まるんだよ。
24 :
17 :2005/05/15(日) 17:30:32 ID:xgVKA5KN
>>16 がいってる _root.C って _rootにある変数Cっていみじゃないの?
25 :
16 :2005/05/15(日) 18:02:25 ID:XrHk64YI
そうです どっちにしろ存在が確認できませんので何か改善策ありませんか?
>>16 _root.MCが存在してるか確認したいなら、
if (_root.MC == undefined) { }
nullとundefinedは==で同値だから意味無し。
28 :
26 :2005/05/16(月) 00:52:33 ID:34s93dMT
29 :
16 :2005/05/16(月) 07:19:00 ID:4ti0GV4N
なんだかASの分野じゃなくなってきたかも。 普通に置いてあるのを認識しないってバグですかねぇ
trace(_root.MC)がundefinedになってない? それが駄目ならインスタンス名が付いてないとか違うとか。
>>29 ボタンを押した時点では存在するの?
とばしてとかいう余計な処理をコメントアウトして確認するとかできるだろ?
バグの確率0.02% 16の凡ミスの確率99.98% 言われた実験をせずに、バグじゃないか?というやつのFlashはバグってない法則。
33 :
16 :2005/05/16(月) 11:13:54 ID:4ti0GV4N
すまない。 いろいろ実験してたら解決してしまった。 16レスも使ってしまってスマソ
皆の後学のために原因と解決法をよろしく。
>>33 何だったの? 気になるから教えて下さい。
36 :
16 :2005/05/16(月) 11:40:18 ID:4ti0GV4N
自分でもわからないが、 たぶん.と,だとおもわれ
・・・
>>36 あー、おれもそれやったことある。負けるな、強い子になれ。
というか、上のASの範囲じゃないってことか?
どうせ基本的なところだろ 次いけ次
>>41 一番の方法は「ANA THE DEP」にメールして聞く。
お金を払って商品を買う君は、大切なお客様だから丁寧に対応してもらえる。
「フラッシュとCGI」の連携は、「ブラウザのフォームとCGI」の連携と同じ
だから、CGIが動けば大丈夫だよ。
#!/usr/local/bin/perl
print "Content-type: text/plain\n\n";
print "Hello.";
とりあえず↑これが動くか確認して、動けばtest2.cgiの
どこかでダメか、あるいは他に問題があるか。
swfをニフ側に置ければ、 allowdomainで行けると思うが。
CGIでHTML内のSWF呼び出しを 〜.swf?count=xxx とするようにする。
45 :
41 :2005/05/17(火) 21:00:59 ID:O/dBbk7M
>>42 このサンプルのCGIは、データファイルをオープンしてその内容をprint;するだけのものなんですが、
CGI単独で動かした場合は意図したとおりになる事は確認してあります。
このサンプルが作られた時は
HTTP://homepageN.nifty.com/XXXX/(Html側)と
HTTP://hpcgiN.nifty.com/XXXX/(CGI側)の連携ができたけれど、
今はドメイン完全一致でないとダメなのかも知れません。
で、完全一致じゃないが、あらかじめ指定したドメインを通すのが、
43さんが言うallowdomainだと思うんですが、
これはたしか2004以降でしたよね。MXでもありましたっけ?
自分の環境はまだMX無印なんですが、ヘルプ調べてみて
MXでもあるようなら自作チャレンジ、2004以降だったら8ボール待ちにします。
Thanksです>42,43
ある。
WidowsXP_SP2 Flash2004 スクリプトで作成した矩形のポイントを、マウスのY座標と動的に連動させようとしたんですが、 うまくいきませんでした。一度描かれると、マウスをY座標の低い位置へ移動しても 再描画できない様なのですが方法はあるでしょうか? onClipEvent(load) {//ポイント設定 point_1X = 0;//ポイント1 point_1Y = 0; point_2X = 50;//ポイント2 point_2Y = 0; point_3X = 50;//ポイント3 point_3Y = -50; point_4X = 0;//ポイント4 point_4Y = -50; } onClipEvent(enterFrame) { this.point_1Y = _ymouse;//移動 this.point_2Y = _ymouse; this.beginFill(0xFFFF00);//図形の描画 this.lineStyle(); this.moveTo(0 ,0); this.lineTo(point_1X , point_1Y); this.lineTo(point_2X , point_2Y); this.lineTo(point_3X , point_3Y); this.lineTo(point_4X , point_4Y); this.endFill(); }
あるかも
>>47 (・∀・)出来た。
onClipEvent(load) {//ポイント設定
point_1X = 0;//ポイント1
point_1Y = 0;
point_2X = 50;//ポイント2
point_2Y = 0;
point_3X = 50;//ポイント3
point_3Y = -50;
point_4X = 0;//ポイント4
point_4Y = -50;
count = 0;
}
onClipEvent(enterFrame) {
point_1Y = _ymouse;//移動
point_2Y = _ymouse;
mc_name1 = "mc" + (count - 1);
mc_name2 = "mc" + count;
removeMovieClip(mc_name1);
createEmptyMovieClip(mc_name2,count);
this[mc_name2].beginFill(0xFFFF00);//図形の描画
this[mc_name2].lineStyle();
this[mc_name2].moveTo(point_1X ,point_1Y);
this[mc_name2].lineTo(point_2X, point_2Y);
this[mc_name2].lineTo(point_3X, point_3Y);
this[mc_name2].lineTo(point_4X, point_4Y);
this[mc_name2].endFill();
}
>>47 this.beginFillの行の前に
this.clear();
でクリアしておく。(0,0)からの描画なので伸びる形になってるが、そこらへんは
試行錯誤して直せるでしょ。
っていうかさ、最初から空白MCを作ってそこへ描いて そのMCを動かせばいいだけじゃん。
53 :
47 :2005/05/18(水) 09:28:42 ID:ul3EX7ac
>49 >51 図を描画する前にクリアが必要だったんですね。 ・ ・ onClipEvent(enterFrame) { this.point_1Y = _ymouse;//移動 this.point_2Y = _ymouse; this.clear(); //←これを追加 this.beginFill(0xFFFF00);//図形の描画 this.lineStyle(); ・ ・ 有難うございます
>>50 ,51
なるほど、消すのには、clear()を使うのか。勉強になった。知らんかった。
>>41 とは違いますが、cgi連携で悩んでます。
CGIダメなレンタル鯖と、CGIオーケーのプロバ(plala)鯖があり、
基本的なコンテンツをレンタルの方に置き、CGIとflashをプロバ鯖に置いてます。
htmlに貼り付けた連携flashは、ちゃんと期待通りの動作をしておりました。
で、今度はその連携flashを、別のflashの中に埋め込もうと思い、
レンタル鯖に置いたflashからloadMovieで、
プロバ鯖に置いてあるCGI連携FLASHを読み込み、
動作させてみたのですが、正常に作動しません。
こういう場合の注意点は何がありますでしょうか?
一応レンタル鯖に置かれた読み込み元のFLASHでは、プロバ鯖をallowDomain済みです。
よろしくお願いします。
57 :
41 :2005/05/18(水) 21:20:12 ID:2Qc0V0h9
>>55 最近CGIとの連携に興味を持ち始めたばかりなので、
そっち系のスクリプトは全然見ておらず、
異なるドメイン間ではデータの送受信ができない
程度の知識しか持ち合わせていませんでした。
ご提示のURLはとても勉強になりました。ありがとうございます。
でもこの方法はかなりトリッキーつーか強引な裏技ですねー。
58 :
56 :2005/05/18(水) 21:52:21 ID:kPImAk12
ポリシーファイルを設置したら、不完全ながら動きました。 flash→cgiは通信できてるようなのですが、cgi→flashができてないようです。 なぜだ。
>>58 不思議だね。送れてるのに返ってこないとは。
perlで戻ってくる様に設定した変数名とflash内の変数名が一致してないとか。
その部分のコードを書いてみたら? loadVariables使ってたら、セキュリティでなくて単純にたぶんパスの問題だと思う
61 :
Now_loading...774KB :2005/05/20(金) 02:59:26 ID:v887Q1dw
凄く初歩的なんですがイマイチわかりません 10〜30の数をランダムで表示させるには Math.floor(Math.random() * 31) + 10; と記述すれば良いんですよね? どうも31以上の数が出てきてしまうのですが・・・
Math.random()*20 で0〜20 Math.random()+20+10 で10〜30 混乱したら数直線を紙にかいてみるといいよ
>>62 本当物凄い勢いで貝等thanks!
やはり計算の仕方がダメでした。。親切にどうもです
64 :
Now_loading...774KB :2005/05/20(金) 03:37:23 ID:VD6TMgAD
環境)Win98SE,FlashMX2004 カウンターによる条件で止まるムービーのASを書いています。 AというMCがボタンを押すことによりY方向に動き出し、カウントi が20より大きくなると止まるよう i = 0; ← 1フレーム目 on (release) { ← 以下ボタンに記述 A.onEnterFrame = function() { i++; A._y += 10; } if (i>20) { A.onEnterFrame = undefined; } } と書きましたが止まりません。 どうしたものでしょうか?
>>61 この貝等をあげよう。a〜bまでの数がVarに入るぞ。
a = 5;b = 8;
Var = Math.floor(Math.random()*(b-a+1)+a);
66 :
Now_loading...774KB :2005/05/20(金) 04:28:37 ID:KQwujbzd
今日初めてActionScriptというものを知りました素人です。 スペースキーを押した時効果音を出したいのですが、 この後が全然わかりません orz if (Key.isDown(Key.SPACE)) {
67 :
Now_loading...774KB :2005/05/20(金) 06:07:11 ID:c1PSAJ2+
68 :
64 :2005/05/20(金) 06:56:22 ID:A5ullBd5
(カウンター条件で止まるムービーのAS) 自己解決しました。
>>66 簡単な方法は、
ムービークリップを作る。なかのタイムライン上には
フレーム1 空
フレーム2 音を貼る
フレーム3 stop();
とする。
作ったムービークリップに以下のASを貼る
onClipEvent(load){
//↓どのキーが押された時にするか決める
key = Key.SPACE;
stop();
}
onClipEvent(keyDown){
if (Key.getAscii() == key && !this["keyFlag_" + Key.getAscii()]) {
this["keyFlag_" + Key.getAscii()] = true;
gotoAndPlay(2);
}
}
onClipEvent(keyUp){
if (Key.getAscii() == key) {
this["keyFlag_" + Key.getAscii()] = false;
}
}
>>62 Math.random()は 0 <= n < 1の値を返すから
Math.random()*20 は 0<=n<20
71 :
Now_loading...774KB :2005/05/24(火) 10:46:59 ID:cpFHti5a
ソフト)FlashMX2004_ver7.2 入れ子のMCのASで質問です。 全体のMCをAllとして、その中にon(release)で動く2個のMC:A,B があるとして、Allをマウスドラッグで on (press) { this.startDrag(); } on (release) { this.stopDrag(); } と、動かし、移動した先でAをクリックしてBを動かしたいのですが 上手くいきません。 アドバイス願います。 尚、AllをMCとしない場合(固定したとき)は、A→Bの動作は OKでした。
ボタンmcの中にあるボタンmcって機能せんのじゃなかったけ。 MC : A、B、Cと用意して、CのドラッグでAllが動くようにする。
73 :
71 :2005/05/24(火) 12:12:46 ID:9vFBqrnv
>>72 なるほど、Cで全体を追従させるってことですね。
やってみます。
74 :
Now_loading...774KB :2005/05/24(火) 13:07:54 ID:L2/IOPt1
ムービー開始時に取得した値(例:MCのAの初期座標(a, b))を定数 とする記述法はどんなものでしょうか? Javaなんかだったら、final a と書きますが・・・どうでしょう?
何度言えばわかるんだ? ボタンMCはそのメソッドに排他的要素を含むメソッドが存在するため 入れ子にしたりすると、その中の一切のメソッドは無視されることがある どっかにメモっとけ
>>74 finalx=mc._x
finaly=mc._y
とでもはじめに代入すればいいだろ
でも直接関係ないけどFlashにもfinal欲しいよねぇ。 実質問題ないんだけど、動作しない変数を設定する時なんか気持ちが悪い。
>>75 >一切のメソッドは無視されることがある
どういう場合にされて、
どういう場合にされないのか
詳しく教えてください。
80 :
Now_loading...774KB :2005/05/24(火) 22:01:58 ID:jCcblsHD
>>79 ボタン1の中にボタン2が入ってるとボタン2は反応しないってこと
ボタンに入れ子をするって時点で危ない。
82 :
Now_loading...774KB :2005/05/25(水) 00:00:02 ID:dVs/FX8P
試しにボタンの中にボタンを入れてみたら爆発しました。
そうかい。
質問です。 以前ディレクターでLINGOを使っていた時、キャストの所にLINGO形式で書いたテキストファイルを貼り付け ムービー開始時のイベント(onstartmovie)に引っ掛けて スコアデータ・テクスチャファイル名等をテキストファイルに出力していたのですが、 ASでこのような事はできるのでしょうか? 要はグラフィックさんが組んだデータを中間データとして吐き出すといった事をやりたいのですが、できるのでしょうか?
無理。
86 :
84 :2005/05/26(木) 09:46:49 ID:Fmwwn5uo
え、無理なのですが、具体的にはどこら変の事が無理なんでしょうか? ASはLINGOの簡易版と聞いていたんである程度の事はできるとおもったんですが やっぱり特殊な使い方なんで無理なのか・・・
>>86 flash単体では、テキストファイルに出力ということができない
から無理ということでしょ。
88 :
Now_loading...774KB :2005/05/26(木) 10:18:51 ID:CTXuOigg
斜めに線をビヨーンと伸ばすにはどんなスクリプトを書けばよいでしょうか
>>88 dx=dy=0;
this.onEnterFrame=function () {
this.clear();
this.lineStyle(2, 0xFF0000);
dx+=10;
dy+=10;
if(dx>300) dx=dy=0;
this.moveTo(0,0);
this.lineTo(dx,dy);
}
とか。
90 :
88 :2005/05/26(木) 11:21:21 ID:CTXuOigg
>>89 返信ありがとうございます。
この場合、ふたつの点を指定して線を引くにはどうすればよいでしょうか。
お願いします
>>90 this.lineStyle(線の太さ, 線の色, 線の不透明度);
this.moveTo(始点x座標,始点y座標);
this.lineTo(終点x座標,終点y座標);
少しはヘルプのActionScript辞書みろよ。 例文も載ってるから結構使えるぞ。
ユーザーがヘルプを読まなくなったのはMicrosoftの大罪だと思う。 Flashのヘルプなんて読んでみればなかなか分かりやすいのに。
ヘルプを開くと、ここにいきなり飛ばされる機能があるとか そんな被害妄想
96 :
Now_loading...774KB :2005/05/26(木) 18:41:33 ID:SWIUHsCM
ここは生きるヘルプだ \(`Д´)ノ ウワァアン
if (!happy) { trace("don’t worry, be happy"); } ActionScript辞典の例文より。 良いセンスしてるな。
どこが?
99 :
Now_loading...774KB :2005/05/26(木) 21:39:30 ID:SWIUHsCM
さすがアメリカだな
FLASH MX 2004を使っています 配列について質問です。曲リストのような物を作っているのですが Music = new Array; Music[0〜10] = "曲名";(0〜10に入れてるという意味で) という感じでMusic配列に曲名を入れ その後リストのように表示するためにMC「List」の中のMusicName0〜10に代入しようとしました for(i=0;i<=10;i++){ eval("List.MusicName"+i) = Music[i]; } と書くとエラーが起き(thisの場合withを使ってるのですが) with(List){ for(i=0;i<=10;i++){ this["MusicName"+i] = Music[i]; } } とした場合は変数に名前がちゃんと入っていませんでした traceしたところMusic配列にはちゃんと曲文字列が入っているので 代入部分に問題があるのだと思っています スクリプトはタイムライン上に書いてます 分かる方居ましたら、ご指導お願いします
lengthって何ですか?
>>101 withを使う意味がよくわからない。
for(i=0;i<=10;i++){
this.list["MusicName"+i] = Music[i];
}
でいいのでは?
>>103 ご解答ありがとうございます
後々スクリプトを追記する時見やすいかな、と思ってwithを使っていました
withはFlash4時代の負の遺産だから使う必要はこれっぽっちもない
>>105 そうなのですか・・・。教えてFLASH MX ASで使っている所があって便利だなと思ってました
今後気をつけて取り組みたいと思います。ありがとうございました
ActionScriptで,サーバーと下記の方式でやりとりしたいと思っています。 ・サーバーへのリクエストは,HTTP POSTまたはGETで www-form-urlencoding形式 (application/xmlではない) ・サーバーからのレスポンスは,XML形式のテキストデータとして受け取る これを実現するためには,どうしたらいいのでしょうか。 ちょうどFlexでは <mx:HTTPService>というタグでできるのですが, Flash MX 2004で,ActionScriptだけでやろうとすると ・XMLクラスは送受信ともXML形式でやってしまう? ・LoadVarsは戻り値をXML形式では受け取れない? のではないかというように調べた範囲では見えてしまって,どうすればいいのかと思っています。 どなたか教えていただけないでしょうか…?
>>107 loadVarsでデータ受信時の処理をonDataでカスタマイズすればいいよ。
109 :
Now_loading...774KB :2005/05/28(土) 12:36:22 ID:TVvIXdnI
MXなんですが、for文を使って、duplicateMovieClipであるMCを9つ複製するとします。 それを縦3つ横3つにならべるにはどういうASにすればいいでしょうか?
>>107 GETで良ければ、適宜escapeしたクエリー文字列を付加したCGIのURLから
XMLオブジェクトのloadメソッドで普通にXMLを読み出せばよいわな。
>>109 mc0がもとのMCだとして
for(i = 0; i < 9; i++) {
if(i > 0) mc0.duplicateMovieClip("mc" + i, i);
this["mc" + i]._x += (i % 3) * mc0._width;
this["mc" + i]._y += Math.floor(i / 3) * mc0._height;
}
せめて、自分がどういう方法を試したか提示して欲しい物だな。
>>108 , 110
ありがとうございます,アドバイスを受けてひとまずチャレンジしてみます。
if文の必要性がわからない
115 :
Now_loading...774KB :2005/05/28(土) 18:37:01 ID:DNrlFrDV
>>114 別に必要なければ、使わなくてもいいよ。自分が必要な物だけ使えばいいよ。
116 :
114 :2005/05/28(土) 18:40:18 ID:tJc3Q9jY
117 :
Now_loading...774KB :2005/05/28(土) 19:39:23 ID:DNrlFrDV
ヽ(・ω・)/ ズコー \(.\ ノ
http://fun.poosan.net/detu/up/img/113.swf このようなものを作るために
onClipEvent (load) {
for (tamakazu=_root.oya_table.dansu_bomb; tamakazu>0; tamakazu--) {
_root.attachMovie("tama_bomb", "tama_bomb"+this.tamakazu, Math.floor(Math.random()));
_root["tama_bomb"+this.tamakazu]._x = _root.oya_table._x;
_root["tama_bomb"+this.tamakazu]._y = _root.oya_table._y;
}
}
こんなスクリプトを書きました。が、うまくいきません。
どなたかご教示願います。
ちなみに、_root["tama_bomb"+this.tamakazu]が大きな丸の周りに回っている
小さなまるで_root.oya_tableが中央の大きな丸です。
Math.floor(Math.random()) 常にゼロでは?
深度をランダムにする意図がよくわからんが。
121 :
Now_loading...774KB :2005/05/28(土) 21:08:57 ID:ecxyaNhF
ActionScriptの習得難易度が100だとして C言語はどれくらい難しいでしょうか?
>>114 >>111 はattachMovie だとifは不要だけど、
duplicateMovieClipだと要りますね。
でも、よく見るとmc0の位置は変更されないので
そこを基準にするならばi=1からでも良かったわな・・・。ハハハ
>>121 習得難易度っては、何を以って難しいと捕らえるかに依りますが。
言語の習得っては、独立しているものではなく、
基本的には必要な機能を得るためにアルゴリズムを組み立て、
コマンド等の組み合わせて、コードを記述する「能力」が
プログラミングの技術であって、それさえ身についていれば
あとは、多少の文法の違いはあれど、
コマンドリファレンスマニュアルさえあれば、
PerlだろうがPHPだろうが、VBだろうが
どの言語でも使えるようになるってのが普通ですな。
なので、どれでも差異は無いのではないかと思いますが。
プログラム自体に対する習得難易度はそう大差無いだろうが、 ASの場合非常に柔軟性がある(ルーズというか)書式が許されるので、 ASで慣れて他の言語でコード書くとコードエラー多そう。 後やっぱコーディング>プレビューが直で出来るのがFlashの売りかもね。 他の言語だとコーディング>コンパイル>実行の手間がめんどいかも。
125 :
Now_loading...774KB :2005/05/29(日) 10:22:39 ID:4HTI3vSZ
インスタンスの消し方の質問です。 例えば、あるインスタンスA(MC)をドラッグして、他のインスタンスB と重なった(hitTest()を使用)ときAが消えるようにするASはどんな感じ になりますか? この場合アルファを使わず、いきなり画面から消す形にしたいです。
winsowsXP MX2004です。 あるMCをボタンから外部から与えられた座標(x軸のみ)へ、10フレームで移動したいのですが、 うまくいかないっす。 あと移動は等速ではなく。、10フレームの間で減速したいのですが。 指導よろしくお願いします。 //MC onClipEvent(load) { idousaki = num;//外部から200や500などが入る ichi = this._x; } onClipEvent(enterFrame){ sokudo = ((idousaki-ichi)/10); //距離/時間で速度を出す if(this._x > idousaki) { //プラス方向へ移動 this._x += sokudo; if (this._x <=idousaki) { this.ichi = idousaki; } }else if(this._x < idousaki) { //マイス方向へ移動 this._x += sokudo; if (this._x >= idousaki) { this._x = idousaki; this.ichi = idousaki; } } } //ボタン on(release) { _parent.MC.idousaki = 500;//移動先の座標、このボタンは複数あり、様々な値が入っています }
127 :
Now_loading...774KB :2005/05/29(日) 11:03:16 ID:LUFKdvOR
>>125 これの組み合わせでできる。
onClipEvent(load){}
onPress = function(){}
onRelease = function(){}
if () {}
hitTest(_parent.B)
_visible = false
this.startDrag()
this.stopDrag()
128 :
125 :2005/05/29(日) 11:08:04 ID:4HTI3vSZ
>>127 あー、_visible = false かあ。
ありがとうございます。
>>126 そういう感じの動きは、簡単に↓これだけでも実現できる。
onClipEvent(enterFrame) {
this._x = this._x * 0.2 + idousaki * 0.8;
}
ただし正確に10フレームで完結するようにするには
パラーメタの調整が必要だけども。
まあ、色々やってみるのが良いかと。
でも何か違うか?
>>126 は、スクリプト自体に問題は無さそうなので
もし上手くいかないってのが「まったく動作しない」ってことなら
必要な回答は
>>129 のような内容ではなくて・・・
もしかして、MCの階層が正しく把握できてなくて
ボタンのASが本当は↓こうすべきだとか言うオチかな?
on(release) {
this.MC.idousaki = 500;
}
うまくいかないって言うなら、どう上手くいかないのか
ちゃんとその内容を書きましょう。
131 :
Now_loading...774KB :2005/05/29(日) 22:45:44 ID:fBZw69Y6
そういや、最近気付いた事があるんだけど、 ステージに配置したMCって消せないって思っちゃうじゃない? でも実はswapDepthsで深度を0以上にすると消せるのよ。 -深度や大きすぎる深度だと消せないMCになるって知った時に もしかしてと試したら出来ておどろいた。
既出。
133 :
Now_loading...774KB :2005/05/30(月) 00:23:13 ID:UOycGOS4
>>131 今、やってみたけど、消えない。
onClipEvent(load){
this.swapDepths(1000);
}
↑例えばこれをMCに貼付けると消えるってことだよね。
いや、あの・・・ removeMovieClipの話かと。 保護深度のことな。
135 :
Now_loading...774KB :2005/05/30(月) 05:48:29 ID:UOycGOS4
>>134 removeできたよ。意味ワカンナカタヨ。
\(`Д´)ノ
136 :
Now_loading...774KB :2005/05/30(月) 23:21:33 ID:airSmXM8
i++を一定時間間隔で行いたいのですが、何か関数ありますでしょうか?
>>137 さん
有難うございました!!
うまくいきますた。
139 :
Now_loading...774KB :2005/05/31(火) 04:16:21 ID:iqgMrm5T
すみません。環境はPHP版の ming0.3a の中で ActionScript を書いています。 以下のようにActionSctipをPHPに埋め込んでいます。プログラミングは初心者 です。 $strAction = " ここにActionScriptを書いています。 "; $movie -> add (new SWFAction($strAction)); PHP(Ming)側から引き渡されたSpriteのインスタンスが以下のように存在 しています。ここまでは確認して動いてます。 image1 image2 image3 ・ ・ ・ このインスタンスの数が多いのでforループで設置したいです。 image1._x = 100; image2._x = 100; image3._x = 100; 上のようなActionScriptをまとめたいです。 for(var i=0; i<10 ; i++) { image+i._x = 100; } と書いても動きませんでした。初歩的な質問ですみません。
140 :
Now_loading...774KB :2005/05/31(火) 06:12:26 ID:yNelodUC
swfファイルが呼び出された元(htmなど)のurl又はファイル名を表示するには どのようにすれば良いのでしょうか。お願いします
>>139 mingは使ったことないが、ASだと以下のパターンのどちらか。
// this["image" + i]._x = 100;
// eval("image" + i)._x = 100;
>>140 _urlを表示する
142 :
sage :2005/05/31(火) 09:49:13 ID:Caj/E0Xd
いつもお世話になっています。 gotoAndPlayについて質問です。 例えば、あるムービーが"init"というフレームでstopしていて、その状態で そのムービーのinitを再度実行したいのですが、gotoAndPlayではうまく 実行できません。 何かいい手はありますでしょうか・
>>142 一度別フレームへジャンプさせ、そのフレームでinitにgotoさせればいいような気がするんだけど
どっちにしろそのコーディングは綺麗じゃなさそうだね。
もしできるならメソッドを使うほうがいいよ。
144 :
Now_loading...774KB :2005/05/31(火) 13:40:33 ID:SW6C4P4L
>>141 PHP内部 ”” で囲まれた中でのActionScriptの記述なので、
this[\"image\" + i]._x = 100; または、 this['image' + i]._x = 100;
と記述したら上手く動作しました。ありがとうございました。
145 :
Now_loading...774KB :2005/05/31(火) 20:31:59 ID:GZ8Pb3aU
_root.test_mc.onEnterFrame = function () { n +=1; newTest = "Test"+n; this.duplicateMovieClip(newTest,n); _root[newTest]._rotation = 180+ n*6; } FLASH初心者です。 読み込み度に生成されるオブジェクトの動きを指定することはできたのですが、 生成されたオブジェクト全体の動きを指定するにはどうしたらいいでしょうか。 同じタイミングでオブジェクト全体をフェードアウトさせたいのですが・・・
>>140 HTMLも管理している状況ならfscommandなりを使って
ページのURL取得することはできるけど、そうでなければ無理。
swfの直リン呼び出しとか、他のWebサイトのページ内に
表示された場合は取得する方法はない。
>>145 全体を操作する必要があるような場合は、
単純にもう1つ間にMCを作って、
その中にすべてのオブジェクトを置き
その上のMCを操作するのが良いのでは。
148 :
142 :2005/05/31(火) 23:21:13 ID:Caj/E0Xd
>>143 ありがとうございます。
この手の処理をやるとき、いつも1フレーム余分につくって
そこでストップさせて動かす時は1フレーム戻して・・
というやり方でやっていたので、先人達はもっとスマートな
やり方をご存知かと思いまして・・・
まあでも、これで心置きなく(?)今のやり方で進められます。
ありがとうございました。
いや、だからもっとスマートなのはメソッド・・・
150 :
145 :2005/06/01(水) 00:17:42 ID:EdhmTNiQ
>>147 やってみましたが、駄目でした。orz
生成されるオブジェクトに合わせて段階的にalphaの値が減らされていくだけで
透明になっていくグラデーションができてしまいます。
お手上げです・・・・
それはその上のMCを操作していない。
>>150 >>145 のスクリプトは文法上は正しいけども、
これみると無限に複製を続けてしまう内容で
どういったものを目指しているのか
いまいち良く分かりませんが・・。
↓これを試してみて分からなかったら更に考えましょう。
(1)test_mcを選択して、さらにシンボル化してMCを作成し、
そのインスタンス名にparent_mcと付ける。
(2)
>>145 のASを以下で置き換える。
_root.parent_mc.test_mc.onEnterFrame = function () {
n +=1;
if (n < 60) {
newTest = "Test"+n;
this.duplicateMovieClip(newTest,n);
_root.parent_mc[newTest]._rotation = 180+ n*6;
}
else {
_root.parent_mc._alpha *= 0.9;
}
}
153 :
Now_loading...774KB :2005/06/01(水) 05:42:52 ID:R0cuVTTX
>>152 親切な人(・∀・)イイヨ、イイヨォ、ェラィ
154 :
145 :2005/06/01(水) 15:16:46 ID:8BmceKD0
>>151 >>152 できました!
_alphaの値を変に記述してました。
本当に助かりました。ありがとうございます。
すいません教えてください xp、MXです いままでCGIでやってた処理をデータ形式をXMLに変えてFlashでやりたいのですがどうしてもサーバ上のデータを更新できません data_xml.childNodes[0].attributes.value = "TEST"; こんな感じでデータを設定し my_xml.send("data.xml"); としても更新されません どのへんに原因があるのか教えてください それ以外の処理(xmlの読み込みとか)は正常です データのファイル属性は書き込み可にしてます
swfはセキュリティ上の問題で xmlの「送信」はしても「書き込み」はしません。 書き込みをしたければ送信を受け取って書き込みを担当するCGIが必要になります。
>>156 そうなんですか!
書き込みはCGIにデータを送って書き替えたらいいのですね
素早い返答ありがとうございました!
158 :
Now_loading...774KB :2005/06/02(木) 00:58:30 ID:MuPR535m
ActionScript使って、簡単なデータベース作りたいと考えています。 Accessからデータを読み込むことは可能でしょうか? Accessからデータ読み込んで、Flashのリストボックスでまずは表示させたいのです。 可能であれば、ヒント、書籍など、ご教授よろしくお願い致します。
っ ColdFusion
Flashだけでやる場合は、 っ ODBC, ActiveXObject, ADODB, (MSXML) +ASP(Webまたはイントラネット上) +JScript+fscommand(ローカル環境)
161 :
Now_loading...774KB :2005/06/02(木) 16:15:30 ID:dF+Au6oc
環境:FlashMX2004 「ok」というMCが最初隠れた状態で、MCのAを動かしながら 連動するBの下の(子の)インスタンスbがCに重なったとき、「ok」 が現れるASを下記のようにしました。 ok._visible = false; A.onPress = function() { ※AとBは連動 A.startDrag(); if (B.b.hitTest(C)) { ok._visible = true; } }; しかし、bが重なっているであろうと思える位置においても okが現れません。 間違いのご指摘願います。
162 :
Now_loading...774KB :2005/06/02(木) 17:32:11 ID:DdvUqjY9
>>161 A.onPress = function(){};
の中にhitTest()があるってことは、
押したその時に重なってるかどうか調べるって事だから、そこを直すといいかもよ。
離した時には
onRelease = function(){};
だし、
ずっと確認しておきたいなら
onEnterFrame = function(){};
>>161 MovieClip.on〜
をヘルプで復習してみそ
164 :
161 :2005/06/02(木) 17:42:47 ID:we6EIVy4
>159-160 どうもありがとうございます。 難しいのですね・・。 VBとも比較しつつ、調べてみますです。 ありがとうございました。
>>166 URL見てないけど
ムービークリップを一つ作って、1フレームにstop();って書いて、
フレームを増やして一つのフレームに服を一つ書く
それをボタンでフーレム移動すれば着せ替えできるんじゃないか
>>166 それのように色を変えるだけで良ければ、
ASのColorオブジェクト使ってMCの色を操作することで
割と簡単に実現できる。
170 :
Now_loading...774KB :2005/06/03(金) 09:32:44 ID:qF0IqysU
線が伸びる折れ線グラフを作ろうとしてますが 一応線の動かない折れ線グラフは出来ています。 どのようにして線を伸ばせばよいでしょうか。 サンプルのflaがあるサイトありましたら教えて下さい。
171 :
Now_loading...774KB :2005/06/03(金) 10:24:09 ID:4kgqxRss
>>170 ('A`)これを組み合わせればできるかもしれない。
X1 = 50;Y1 = 200;//開始点の座標
X2 = 300;Y2 = 150;//終了点の座標
Time = 30;//何回でそこまで行くか
Xa = (X2-X1)/Time;
Ya = (Y2-Y1)/Time;
Count=0;
onEnterFrame = function(){
clear();
lineStyle(4, 0xff9900, 100);
moveTo(X1,Y1);
lineTo(X1+(Xa*Count),Y1+(Ya*Count));
Count++;
if (Count > Time) {
delete(onEnterFrame);
}
}
172 :
170 :2005/06/03(金) 12:11:22 ID:qF0IqysU
>>171 ありがとうございました。
早速試してみます。
173 :
さめもも :2005/06/03(金) 13:46:54 ID:MXqd4NLu
現在ブラウザ上で表示している文字列をパラメータも含めた形で取得したいのですが、どのようにすればよいでしょうか。
swfファイルの位置などではないです。
ttp://www. ○○○○.com/flash.php?id=01&name=tom
というような物です。
それをフラッシュ内で、文字列を分割して、個別のテキストエリアに入れたいのです。
よろしくお願いします。
174 :
Now_loading...774KB :2005/06/03(金) 14:07:00 ID:4kgqxRss
175 :
?173 :2005/06/03(金) 14:59:37 ID:MXqd4NLu
>>174 ?以降の文字列は変数なのですけど、この方法でできるのでしょうか。
試してみます!ありがとうございます!
176 :
Now_loading...774KB :2005/06/03(金) 15:40:01 ID:4kgqxRss
>>175 できる。
javascriptを使うなら、
window.location.search.slice(1)
document.write('')
とか使うはずだ。
177 :
173 :2005/06/03(金) 17:06:35 ID:MXqd4NLu
174様 出来ました、ありがとうございます!
onClipEvent (load) { coj = new Color(this); c = coj.getRGB(this); trace(c); coj.setRGB(0xffffff); } on (rollOver) { coj.setRGB(c); } 大量の画像を白色に表示しておいて、マウスが触れたら 元の色に戻る物を作りたいんですが、 どうもうまく元の色に戻らない、黒になってしまう。 試しにトレースしてみたら「0」と表示された。 getRGBの使い方根本的に間違っているようなヨカーソ 助けて
>>178 背景を白。大量の画像._visible=falseからtrueに。
180 :
178 :2005/06/07(火) 14:22:38 ID:ALP8Jsey
ごめん、めっちゃ言葉不足でした。 まずでかい一枚のカラフルな絵がある。 その一枚の絵の色のついた部分を、 それぞれムービークリップ化し、白色表示させておく。(200個ほど) で、その絵をマウスでなぞるとマウスが触れたムービークリップは 元の色を取り戻す。 これで塗り絵のような効果を出したいんだ。 だから、ムービークリップはそれぞれ独立してないといけない。 色操作の解除ができるメソッドってないんだなー それで困ってしまいまして。 フレーム1にカラー調整した物を、 フレーム2にカラー調整のしていない物を置く方法でなら 苦労なくいけると思うんだけど、 何せムービークリップの数がすごい。もっと増えるかもしんない。
181 :
178 :2005/06/07(火) 14:24:41 ID:ALP8Jsey
白色のパーツを作って被せておいて、 ロールオーバーで非表示にしてみる方法も試してみてるんだけど、 絵の形式の都合で難しい 注文が多くて申し訳ないです
>>180 そんな方法じゃなくてマスクレイヤーに描画メソッドでマウスで線描く方法もありそうだ
getRGBはASとかで設定された色の相違を返すから Flashそのものが塗った色は返さないけどそれは理解してる?
184 :
178 :2005/06/07(火) 15:11:42 ID:ALP8Jsey
>>182 うん、その方が塗り絵らしいと思う。
けどそこまで塗り絵らしさは求めてるんじゃなくて、
カラフルな絵を際立たせて展示するためのちょっとした演出として考えてます。
でも参考になりまつ。レスthx
>>183 ようやくさっき理解しますた…
…つーことは
いったん色を変更して、元の色に戻すってのはASじゃ不可能なのかな。
その「元の色」をデータ化しておけば可能なんだろうけど、
色の種類も多いからちょっと現実的じゃないな…
やっぱ白い絵を大量に被せるのが一番か…?
質問です WindowsXPでFlashMX2004 配列をソートして数字が小さい順番で並べたいのですが a = new Array(10, 1, 2, 20); a.sort(); trace(a); こうすると1,10,2,20になります どうしたら数字が小さい順番になりますか?
>>184 setRGBとgetRGBではなく
えっと名前忘れたけどもう2つあったでしょ?
そっちだと変更をパーセンテージで変えられるからそれで何とかなると思うけど。
>>185 自分でソートプログラム書いたほうがいいかもね。
バブルソートで検索してごらん。
>>185 a.sort(Array.NUMERIC);
trace(a);
188 :
178 :2005/06/07(火) 15:51:40 ID:ALP8Jsey
189 :
Now_loading...774KB :2005/06/07(火) 16:08:49 ID:JhByVYLb
ものすごい勢いの貝だな
191 :
Now_loading...774KB :2005/06/07(火) 16:38:06 ID:8YbR+opm
ソフト)FlashMX2004_ver7.2 OS)Win98SE lineTo()描いた線を、古い線から順に消していく(又はアルファを下げる) にはどうすればいいでしょうか? 例: 線を ―――――――――――――――――――― と引き、これを - - - - ----- ----- ――――――――――― としたいと思っています。
192 :
191 :2005/06/07(火) 16:39:51 ID:8YbR+opm
訂正: lineTo()描いた → lineTo()で描いた
>>191 こんな感じ?
mem = new Array();
this.onEnterFrame = function() {
_root.clear();
mem.push(new Array(_root._xmouse, _root._ymouse));
if (mem.length>60) mem.shift();
for (i=0; i<60; i++) {
if (i == 0) _root.moveTo(mem[0][0], mem[0][1]);
_root.lineStyle(4, 0x000000, i/60*100);
_root.lineTo(mem[i][0], mem[i][1]);
}
};
つまり、線の座標を全部配列に入れておいて線を全部消してから全部再描画
194 :
191 :2005/06/07(火) 18:31:52 ID:W8q3ZYWS
>>193 有難うございます。
これでやってみます。
195 :
Now_loading...774KB :2005/06/07(火) 18:33:32 ID:JhByVYLb
>>193 これすごいねー。面白い、面白いよ。(・∀・)イイ!!
197 :
191 :2005/06/07(火) 20:58:14 ID:QUYojZTQ
>>193 すみません。このASを打ち込んだところ、「動作が非常に遅くなっています〜」
というメッセージが出て確認ができません。
※メモリの問題で、テキストからのASのコピペができないため手入力しました。
if (i == 0) _root.moveTo(mem[0][0], mem[0][1]);
の所は
if (i=0) {
_root.moveTo(mem[0][0], mem[0][1]);
}
でいいのでしょうか?
199 :
Now_loading...774KB :2005/06/07(火) 21:06:26 ID:JhByVYLb
>>197 forが無限にループしてると、その文がでてくるよ。
for (i=0 ; i<=1) {
}
↑とかやると、でるよ。
200 :
Now_loading...774KB :2005/06/07(火) 21:08:18 ID:JhByVYLb
訂正 for (i=0 ; i<=1 ;) { }
配列でmapに"xx"を格納して map = new Array("xx"); visibleを使って_root .xx .wakuというMCを非表示にしたいのですが、 以下の様に表記してもうまく機能しません… _root._root.map[0].waku._visible = fales; mapの部分をどのように表記すればいいのでしょうか? ちなみにこのように表記すればうまく機能するのですが、何とか配列で管理したいと思ってまして… _root.xx.waku._visible = fales;
203 :
Now_loading...774KB :2005/06/07(火) 21:57:26 ID:YDczYzbE
>>202 _root._root[map[0]].waku._visible = fales;
じゃないかな。
205 :
Now_loading...774KB :2005/06/07(火) 22:42:50 ID:S+GzrSPx
>>202 new Array()は引数が1個だと配列の長さを
指定することになるので使うときは注意が必要。
map = new Array();
map.push("xx");
_root[map[0]].waku._visible = false;
+オマケ
MCの名前だけじゃなくて、MC自体を
配列に入れてしまうのもCOOLかも。
map = new Array();
map.push(_root.xx);
map[0].waku._visible = false;
206 :
Now_loading...774KB :2005/06/07(火) 22:48:50 ID:N51G03l8
メトロイドタイプの 横スクロールアクションゲームを作ろうとしているのですが、 キャラクターと壁、床との接地を行う良い方法を教えていただ けませんでしょうか。 現在は、主人公の上下左右に別々にヒット判定を作り、壁と床 と天井を区別させているのです。 スクリプトもそこ記述しています。それはいい感じなのですが、 マップのほうが問題なのです。 hitTestでやろうとしているのですが、マップの形ではなくMC の四角形で判定されてしまうので、うまくいきません。 四角いブロックを沢山つくってマップを作ろうとしたのですが、 コピーしたMCには反応してくれません。 何か良い方法はありませんでしょうか。
>>206 hitTest(x, y, true);
209 :
Now_loading...774KB :2005/06/07(火) 23:04:16 ID:N51G03l8
>>208 ありがとうございます。
しかし、それですと主人公の一点からしかヒットが取れないので、
天井か床に食い込んでしまいませんでしょうか。
>>209 マップを構成するキャラクタの単位の大きさより短い間隔(周期)で
ヒット判定のポイントを、主人公キャラクター周辺に複数用意しておけば
一応、大丈夫なはず。
・
・○・
・/|\・
・| |・
・・
食い込んだ場合は、食い込みがなくなるまで逆方向に微小量戻す。
ただ、本当にちゃんと連続性を考えてやるなら
hitTestではなくて全て座標で管理するのが良いんだけどね。
点ではなくて、線との交差を判定するような方法で。
ただ、そういう複雑な処理をすると重くなりやすいので、
ここらへんがプログラミング技術の見せ所。
211 :
202 :2005/06/08(水) 00:19:32 ID:Us6TrrXn
>>203 >>205 ありがとうございます。おかげで動作しました!
質問ばかりで恐縮なんですが…出来れば
>>202 の場合での、配列が例えば一つ上の階層にあったり
別階層にあった時の表記はどの様になるのかご教授お願いします。
>>211 配列使う前にMCのパスの記述方法をマスターするのが先かな。。
_root.aa ってのは
_root["aa"] とも書けて、この二つは全く同じ。
AS内でMCの名前を直接書く場合は、だいたい上の形式を使うけど
文字列変数を使ってMCの名前を指定したい場合は[ ]を使う。
例えば、↓これは
_root.xx.yy._visible = false;
以下のようにどう書いても良い。
_root["xx"].yy._visible = false;
_root.xx["yy"]._visible = false;
var strName = "yy";
_root.xx[strName]._visible = false;
var strNameX = "xx";
var strNameY = "yy";
_root[strNameX][strNameY]._visible = false;
map = new Array("xx", "yy");
_root[map[0]][map[1]]._visible = false;
さて、配列の定義、 map = new Array(); は、実は(this.)を省略した形で this.map = new Array("xx", "yy"); thisはASをどのMC内に書いたかで変わる。 _rootのAS内で map = new Array(); とした場合は _root.map = new Array(・・・); を定義したことになるので _root.map = new Array("xx", "yy"); _root[_root.map[0]][_root.map[1]]._visible = false; _root.xxのASでmap = new Array();とした場合は _root.xx.map = new Array(・・・); を定義したことになるので _root.xx.map = new Array("xx", "yy"); _root[_root.xx.map[0]][_root.xx.map[1]]._visible = false; まあ・・・頑張ってくれ。
次のシーンにデータ(あるオブジェクトのプロパティ値)を引き継ぐ場合どうすれば良いでつか?
>>215 先ず、
score=0;
と、書きましょう
scoreの値が不定義なのに
score+=10しても
不定義+10=不定義 のままです。
score=0;
MCの名前.ボタンの名前.onRelease = function (){
score+=10;
}
215です。
>>216 試してみましたが、うまくいきませんでした(;´Д`)
score=0;
MCの名前.ボタンの名前.onRelease = function (){
score+=10;
}
このスクリプトを書くのはMC内に配置してあるボタンの部分で良いのでしょうか?
あと
on(press){
score += 10
}
これはそのまま前のスクリプトに追加してそのまま記述すればいいんでしょうか?
219 :
206 :2005/06/08(水) 12:24:23 ID:0ON6O6vy
>>210 詳しい解説ありがとうございます!
うまくいきました。
しかし、この書き方ですと、敵や弾のヒット全てに対して毎フレーム判定することにナリ、
相当重くなりそうで不安です。
わがままで申し訳ありませんが、キャラのほうにヒット判定のコードを持たせて、小さい四角い
マップを沢山配置するような方法でヒットを取ることはできませんでしょうか。
一度やったのですが、四角いマップのMCをコピーして作成していくと、一番深度が
深いものにしか判定を取ってくれないのです。
それが解決できれば、私にも管理できる簡単なスクリプトで行けそうなのですが…。
どなたか、同じインスタンス名の沢山のMCに対してhitTestを実行できる方法を
ご存知の方はいらっしゃいませんでしょうか。
>>219 つか、hitTestを使わないといけないの?
普通、シューティングとか作る人はそんな遅いルーチン使わないけど。。
221 :
202 :2005/06/08(水) 13:06:45 ID:yBGEhWdQ
>>212 とても丁寧な解説ありがとうございます!
おかげで出来なかった部分が色々出来そうです。
もっと精進しなくては…お世話になりました。
>>218 えっと、ごめんなさい。
ルートのタイムラインの第一フレームに
score=0;
と記述して、ボタンのスクリプトには
on(press){
_root.score+=10;
}
これで、一応は動く筈です。
どこが持ってる変数なのかを意識したりしましょう。
因みに
>>216 に書いてあるソースは、ルートのフレームアクションに記述すべきソースです
ちゃんとMCの名前とボタンの名前を付ければあれでも動くと思いますよ
223 :
Now_loading...774KB :2005/06/08(水) 14:38:47 ID:/H4qqtS8
FLASH MXでカーソルを追従するアクセサリーを作ってHPに置きたいのですが、 普通に作るとHPの中でもFLASHムービーの中でしか表示できないです。 なんとかHPの表示エリア内全域で表示できるカーソル追跡アクセサリーは作れないものでしょうか?
javaスクリプトでやったほうが早い
>>223 アクセサリーがFLASHムービーである以上、その領域を出ることはできません。
たとえて言えばビデオの映像がモニタから外に出てくるようなもので、それではホラーです。
FLASHムービーのステージサイズを常にブラウザにフィットさせるなどの方法は考えられます。
というかAS以前にそんなサイトはうざったくてやめたほうがいいよ。
>>222 何度も丁寧な説明ありがとうございました。
おかげさまで、一応動くようになりました。(゚∀゚)
もっと理解を深めるようガンバリマッス。
228 :
Now_loading...774KB :2005/06/08(水) 20:30:13 ID:5U4/Wb4B
>>220 219の方法はちょっと( ・3・)アルェーって感じだけど、
hitTestうまく使えば凄い処理軽くなるよ。
>>220 hitTestを使わずにシューティングとかって作れるんですか!?
概要だけでも教えてください!!
>>229 hitTest使わないタイプだと、
全てのmcの座標を構造化して配列の中に突っ込んで、
座標をソートして比較が手っ取り早いんじゃないかな。
点と点の判定は、xyが同値であること 点と四角の判定はxyそれぞれが、面の最大最小に入っていること。 四角と四角の判定は、xyそれぞれの片方の最大が、もう片方の最小より大きく、かつ片方の最小がもう片方の最大より小さいこと 判定速度は点と点が最も早いが、実は四角と四角もそれほど重くない(単純計算で2倍)。 点と四角は、点が1×1の四角と同じ式になるので、四角と四角との判定と大差ない。
ついでに言うと、hitTestを使わないメリットは その大きさのMCを用意しなくてもよいということと 最初にxだけ判定して、当たる可能性のある物だけyの判定をすればいいので 多少軽くなったりするべ。
233 :
229 :2005/06/08(水) 21:28:02 ID:UXqUEooY
234 :
220 :2005/06/08(水) 22:38:56 ID:DcavQ7Sn
>>229 う、出遅れて皆さん答えられてるけど、アンカー掛けられてるので追加で。
ベクトルの内積を使った領域判定、円同士の半径を計算しての当たり判定
なんてのもあるよ。
そのへんの中級あたりの解説書ではあまり説明してくれないけど、 必要な人にはすごくありがたい情報ってのはどうやって手に入れるものなの? 人のソースコードから学んだり、 組みながら編み出していったりするもの?
ActionScriptの解説書じゃ無いのに考え方はいろいろ書いてあるよ。 そういうの読んで自分でASに置き換えればいいだけ。
私がバブルソートを知ったのはC言語
>>235 判定関係は自分で考えたよ。ノートに何度も数式を書いた。
あとはゲームとか見て想像したり。
外部ホストのファイルを読み込む裏技みたいなのありますか? CGIとか使わずに
>>235 アルゴリズムを自分で思いつかない人は才能ないので
ActionScript使って何か作るのは辞めた方が良いでしょう。
トンクス
やはり、他の言語というか、
プログラム思想に近い本を当たったりしたほうが良さそうですね
>>240 才能のある人のコード見せてください
>>240 なんだよ、99%のASプログラマが失業するぞ。
>組みながら編み出していったりするもの? これは yes だな。
デザインも出来てスクリプトも出来ないとFlash的にはキツイ。
246 :
Now_loading...774KB :2005/06/10(金) 01:14:39 ID:WdbFj+LK
才能の問題と言えばそうなのかもね。 例えば、loop文を知った時に衝撃的じゃなかった? 「これ使うだけで物凄く簡略化出来るんじゃ?」とか。 さらに配列を知り、構造化を知り、 構造に対してループかける事で何でも出来るじゃん!みたいな(笑) 知るたびに面白くて色々なパターンを自分で作る事も多いし、 Web上のTipsなんかを見てなるほどと思って自分なりに参考にしてみたり。 最初から何でも判るわけでもなく、 そういう探究心がある人がどんどん伸びて行くんじゃないかな。
未だに絵のセンスが上達しない俺
絵のセンスか・・ もう九年デザイン関係の仕事をしているが上達した気がしないな。逃避盗作のセンスしかないやORT
いうほどasなんて難しいもんじゃないから 適当に弄ってたら、自分で思いつきで組めるようになるよ 始めは、基本を覚えて、次に人の真似して prototype組んで、適当に捏ねくりましたりすれば そうだね、半年である程度のレベルにはなる
250 :
Now_loading...774KB :2005/06/10(金) 16:44:20 ID:NpD4sobg
curveTo()を使った曲線描画の質問です。
環境:FlashMX2004 OS:Win98SE
ボタンを押して複数のMC(p1〜p4)を結ぶ曲線を描画するように
on (press) {
this.lineStyle(5, 0xFF0000, 50);
//太さ5、赤色、アルファ値50に設定
this.moveTo(_root.p1._x, _root.p1._y);
this.curveTo(_root.p2._x, _root.p2._y, _root.p3._x, _root.p3._y);
this.curveTo(_root.p3._x, _root.p3._y, _root.p4._x, _root.p4._y);
}
と書きましたが、上手く点を経由しません。なだらかに点をつなぐには
どうすればいいでしょうか?
実際のswfは
http://oekaki.s56.xrea.com/x/uploader/src/oe1251.swf にUpしています。
ご指摘、宜しくお願い致します。
p1,p2,p3のシンボル内の座標はokか?
>>247 絵の技術ならまだしも、センスとなると少々難しい問題だな
センスってやつには、人によってあうあわないっていう基準もあるし
まあ自分にしか描けない、出来ないってのがあると、それは強みだと思う
もちろん基本的なクオリティは高めないといけないが
おっと、AS関係ねぇ
そして人に言える立場じゃねぇ
>>250 うまく経由しないって、、まさかコントロールポイント経由しないってこと?
254 :
250 :2005/06/10(金) 17:42:45 ID:4W2OGkrz
>>251 シンボル内の座標とは基準点のことでしょうか?それならば、基準点は
各インスタンスの中央に置いています。
>>253 コントロールポイントは経由している様に見えますが。。。。
「かすめている」状態です(詳しくは、swfをご覧下さい)。
ここでの目的を言い換えると、「複数のコントロールポイントを
通るなだらかな曲線を描画したい」となります。
255 :
253 :2005/06/10(金) 17:46:13 ID:FJyCpV1O
>>254 コントロールポイントを通る場合は開始座標終了座標の中点以外無い
コントロールポイントの意味を理解してる?
256 :
253 :2005/06/10(金) 17:58:35 ID:FJyCpV1O
訂正orz.. ×中点以外 ○直線上以外 ちなみにflashのペンツールとはちがうよん。
>>255 ありがとうございます。それならば、S字型曲線を描きたい場合は、
Sの中間に(中央に)開始点を置き、終点を上下に置き、コントロール
ポイントをそれぞれの間に置けばOKですか?
当然分かるとおり、コントロールポイントを 中点に置くと描けるものは直線である。 幾つかの指定した点を通るなだらかな曲線 (各ノードにおいて微係数も連続である曲線)を描くには スプライン補間とかして自分で描くしかない。
flashMX2004使用 ランダムで長さの違うflvファイルを読み込み、 最終フレームで停止したflvを表示させたいのですが、 デフォルトだと、ムービーの始めに戻りループ再生してしまいます。 これは可能なのでしょうか? ボタンなどで停止するのではなく、あくまでもムービーの最後まで再生したのち、 最後のフレームの映像をずっと表示させたいのです。 ご教授お願いいたします。
260 :
255 :2005/06/10(金) 18:39:00 ID:FJyCpV1O
>>258 , 260
有難うございます。サイト見てみます。
S型曲線のASを書いてみました。
swfは
http://oekaki.s56.xrea.com/x/uploader/src/oe1254.swf にあります。
this.onEnterFrame = function() {
this.clear();
this.lineStyle(5, 0xFF0000, 50);
//太さ5、赤色、アルファ値50に設定
this.moveTo(_root.p1._x, _root.p1._y);
this.curveTo(_root.p2._x, _root.p2._y, _root.p3._x, _root.p3._y);
this.curveTo(_root.p5._x, _root.p5._y, _root.p4._x, _root.p4._y);
};
各点はstartDrag()で移動させています。
>>262 nodes = new Array(_root.p1, _root.p2, _root.p3, _root.p4);
lineStyle(5, 0xFF0000, 50);
moveTo(nodes[0]._x, nodes[0]._y);
for (i = 0; i < nodes.length - 1; i+= 0.1) {
infoControl = getPoint(i + 0.05);
infoAnchor = getPoint(i + 0.1);
curveTo(infoControl[0], infoControl[1], infoAnchor[0], infoAnchor[1]);
}
function getPoint(t) {
infoPoint = new Array(0, 0);
var i, j;
for (i = 0; i < nodes.length; i++) {
infoParam = new Array(1, 1);
for (j = 0; j < nodes.length; j++) {
if (j == i) continue;
infoParam[0] *= (t - j);
infoParam[1] *= (i - j);
}
infoPoint[0] += nodes[i]._x * infoParam[0] / infoParam[1];
infoPoint[1] += nodes[i]._y * infoParam[0] / infoParam[1];
}
return infoPoint;
}
265 :
Now_loading...774KB :2005/06/11(土) 00:03:42 ID:NpD4sobg
円のMC(wa1)が斜め方向に往復するASを書いています。 speed = 4; //動く速さ wa1x0 = _root.wa1._x; _root.wa1.onEnterFrame = function() { _root.wa1._x += speed; _root.wa1._y += speed; trace("x= "+_root.wa1._y); trace("y= "+_root.wa1._x); vX = _root.wa1._x-wa1x0; //動き幅 if ((vX<0) || (vX>100)) { //動き幅がこの範囲を越えたら speed = -speed; //方向を逆転 } }; 一応、X方向には往復するのですが、Y方向には動きません。 理由は何でしょうか? あと、trace()を入れてますが、出力ウインドウが現れません。 この点もご指摘願います。
266 :
265 :2005/06/11(土) 00:54:49 ID:KcyBG54O
ソフトはFlashMX2004_ver7.2です
>>265-266 テストしたところそのASで特に問題なく動くようですが。。
何なんでしょう。
//動く速さ
speed = 4;
wa1x0 = _root.wa1._x;
_root.wa1.onEnterFrame = function() {
_root.wa1._x += speed;
_root.wa1._y += speed;
trace("x= "+_root.wa1._y);
trace("y= "+_root.wa1._x);
//動き幅
vX = _root.wa1._x-wa1x0;
//動き幅がこの範囲を越えたら
if ((vX<0) || (vX>100)) {
//方向を逆転
speed = -speed;
}
};
traceが効かないのは、パブリッシュ設定で
traceアクションを省略するようになっているとか。
f2キーを押して、非プレビュー中でも表示されないなら、
どこか画面外にふっとんでいる場合が。
268 :
265 :2005/06/11(土) 02:36:33 ID:lP7+5C4L
>>267 有難うございます。しかし、、、尚も改善されません。
試しにMCのwa1に記述してみました。
onClipEvent (load) {
speed = 4;
wa1x0 = this._x;
}
onClipEvent (enterFrame) {
this._x += speed;
this._y += speed;
trace("x= "+this._y);
trace("y= "+this._x);
vX = this._x-wa1x0;
if ((vX<0) || (vX>100)) {
speed = -speed;
}
}
trace()は出力されましたが、これだと縦方向に下がるだけです。
更なるアドバイス願います。
>>268 MCを回転させているのを忘れているとか。
そのASをコピペで、ちゃんと斜めに動きますが。
>>269 MCを回転させているとは、どういう意味でしょうか?
>>265 一応こうゆうのでも動きます。あんまり綺麗なソースじゃないですが
onClipEvent(load){
var i=0;
//↓触れ幅
var haba=20;
//↓スピード
var speed=5;
//↓左上〜右下の動きなら「1」 右上、左下なら「-1」
var sw=1;
}
onClipEvent(enterFrame){
this._x=Math.sin(i/180*Math.PI)*haba*sw;
this._y=Math.sin(i/180*Math.PI)*haba;
i+=speed;
}
>>271 有難うございます。なるほど三角関数ですね。
余談ですが、今の高校の数学では、一次変換が消えたとの情報があります。
(円の斜め往復運動) スミマセン。MCのwa1の編集画面に余計なスクリプトを書いていました。 お手数をおかけしました。
274 :
Now_loading...774KB :2005/06/11(土) 10:37:58 ID:cYeaQT38
下記のように繰り返し処理で 配列Aに配列Bを代入していきたく、関数を作ったのですが これをクリップイベントenterframeや、フレーム上で実行すると 固まってしまいます。どのようにすればよいでしょうか? ご教授願います。 function noto(){ for(i=1;i=30;i++){ A[i]=B[i]; };
function noto(){ for(i=1;i==30;i++){ A[i]=B[i]; }; 2行目のi=30はi==30じゃないとだめ。 =は代入演算、==は等しいことを確かめる。 配列の長さはB.lengthで調べることができます。 もし配列Bの長さが変化するならこれを利用したほうがよいと思われます。 配列を丸ごと全部代入したいなら A=B;でもいいんですよ。
>>274 ・配列は「ゼロ」から始まるので >i=1 → i=0
・i=30では無く i==30の間違いでしょう。そしてこれは配列の長さプロパティを直接使ったほうが後々便利だと思います >i=30 → i<B.length
・蛇足かもしれませんがA=new Array();若しくはA=[];といったかたちで配列の宣言はしてますか?
↓で動くと思います
function noto(){
for(i=0;i<B.length;i++){
A[i]=B[i];
};
っ function noto(){ A=B.slice(0); }
278 :
274 :2005/06/11(土) 12:54:18 ID:cYeaQT38
ありがとうございます =になってた事に気がつかなかったなんてorz
280 :
Now_loading...774KB :2005/06/11(土) 13:08:35 ID:I+20ifeC
USA!USA!
281 :
Now_loading...774KB :2005/06/11(土) 13:42:03 ID:I+20ifeC
>>281 確かに煩わしいサイトだ。
技術だけあってアイディアが貧弱な人は割とこういうサイトを作りやすい。
ツーリー表示なんて再帰関数使えば簡単。
284 :
Now_loading...774KB :2005/06/11(土) 14:47:08 ID:a0DbLw/O
>>281 ドラッグの仕方?伸縮の動き?ツリーの管理?
何をお願いしてるのかも良く判らないので、質問はもう少し具体的に。
>>283 MONOとかに影響受けてる感じだね。
でもまぁ、自分に害がある訳じゃなし、
所詮人のやってる事なんだからそこまで言わんでも。
MX2004Proです。 MediaDisplayコンポーネントからFLVを読み込む際に ProgressBarコンポーネントを表示させようと まずMediaDisplayコンポーネントを配置し インスタンス名myVideoとして 次に同じフレーム上にMediaDisplayに重なるように ProgressBarコンポーネントを配置し、myProgressとインスタンス名を つけます。 ProgressBarコンポーネントのsourceはmyVideoとして 次にmyVideoを選択して on (complete) { _root.myProgress.visible=false; } とAS書いたのですがProgressBarが表示されたままになります。 ちゃんと100%になってるのでデータの読み込み自体は 大丈夫みたいですが、なぜ表示されたままなのか わかりません。 どなたかアドバイスいただければ幸いです。
エスケープキーを押すと結果画面に行くようにしたいのですが下記のコードではうまく 動きません。どうすればよいですか? if(Key.isDown(Key.ESCAPE)){ _root.gotoAndStop("kekka"); }
>>286 リスナーの方のサンプル。MCイベントでとるやり方もある。
//シンプルなキーリスナー
var keyListener = new Object();
keyListener.onKeyDown = function() {
switch (Key.getAscii()){
case Key.ESCAPE: trace("EscapeKey down");break;
default:trace(Key.getAscii());
}
};
Key.addListener(keyListener);
デバッグ時に制御-->ショートカットキーを無効に。
288 :
Now_loading...774KB :2005/06/12(日) 12:05:40 ID:wpYYrJMN
OS:windowsXP Ver:FLASH MX FLASHをキーボードからの命令を受けてフレーム移動させたいのですが、 PowerPointのように、Enterキーもしくは矢印キーを押すだけで、フレームの移動をさせることはできますか? 今まではボタンを作って、空のキーフレームに stop(); 記述 ↓ ボタンに、 on(press){ gotoAndPlay(2); } を記述 というので作っていました。
289 :
Now_loading...774KB :2005/06/12(日) 14:09:01 ID:PnV22zi+
クリップをぶるぶるとランダムに震えさせるアクションスクリプト探してます。 ムービークリップのアクションにぱっつり貼ればガタガタ震えるようになる ようなサンプルないでしょうか。
>>289 onClipEvent(load){
//↓横の触れ幅
var rangex = 5;
//↓タテの触れ幅
var rangey = 5;
var defx=this._x;
var defy=this._y;
onClipEvent(enterFrame){
this._x=defx+(Math.random()*(rangex/2)-rangex);
this._y=defy+(Math.random()*(rangey/2)-rangey);
}
あ 括弧綴じ忘れた 自分で閉じてね
292 :
289 :2005/06/12(日) 14:30:05 ID:PnV22zi+
>>290 本当に本当に本当に本当に本当に本当に本当に本当にありがとう。
愛してます。
>>288 キーリスナーとnextFrame()あたり調べてみれ
それぐらいがすぐにできないようなら,もいっぺん勉強した方がいいと思われ
294 :
Now_loading...774KB :2005/06/12(日) 15:36:56 ID:M9nFnZUQ
295 :
288です :2005/06/12(日) 16:52:43 ID:wpYYrJMN
>>293 ありがとうございます。今からやってみます。
XP Sp1でMX2004を使ってます。 ↓キーで操作するボタン(MC)を作りました。 MCに3つのキーフレームをつくり、それぞれにキー認識用のMCを置き、それに onClipEvent (enterFrame) { if (Key.isDown(Key.DOWN)) { this._parent.gotoAndPlay("no.1"); } } このようなスクリプトを書きました。 が、これでは一回キーを押しただけでも押していた時間が長い(1秒程度)場合、連射と認識されてしまい 延々とフレーム「no.1」→「no.2」→「no.3」→「no.1」の移動が繰り返されてしまいます。 どうすればうまく動いてくれるでしょうか
あなたにとってうまい動きとはよくわかりません onClipEvent (keyDown) { if (Key.isDown(Key.DOWN)) { this._parent.gotoAndStop("no.1"); } }
KeyUpでいいじゃん
299 :
Now_loading...774KB :2005/06/12(日) 20:08:09 ID:/JNfXTJZ
>>297 氏
ありがとうございます。
出来ました。
・・・つーかこんな基本的なことが出来なかった俺はASの基礎からやり直すべきだな・・・
304 :
Now_loading...774KB :2005/06/13(月) 09:07:34 ID:8nM0DBB1
TextField内に文字を追加するASの質問です。 環境)FlashMX2004 空のTextField(ダイナミック?)を用意し、hitTest()でMCのXに他のMCである Aが重なった場合にTextField内に文字Aを、Bが重なった場合に文字Bを、Cが重 なると文字Cを一列に追加する形のASを組みたく思っています。 つまり、XにA,B,Cがhit → TextField「ABC」 としたく思いますので、アドバイスを願います。
>>304 アドバイスも何もその通りにAS組めばいいわけで。
何か問題があるの?
ざっくばらんに言うと XにA,B,Cがhit → TextField「ABC」 って感じの構造にすればいいと思うよ
Flash板はこういうの突っ込んであげるってのは優しいよなぁ。 他の板なら華麗にスルーだよ。 どこまで組んだのか、何が分からないのか、自分で何を調べてみたのか、やってみたらどうなったのか こういう情報がないと教えようがないよ。 テキストフィールドの配置が分からないのかもしれないし、 もしかしたらFlashのインストールから教えなきゃいけないかもしれないし。
へ!?
310 :
Now_loading...774KB :2005/06/13(月) 13:46:01 ID:DeNtUuur
質問なんですが、ムービープレビューでは、ちゃんとASが、作動するボタンが ブラウザでプレビューでは、作動しなくなったりします。 ボタントラックのせいかと思いムービークリップにしてボタンとしてみると ブラウザプレビューでも今度は、作動したんですけど、 さらに、HTMLに埋め込んだSWFから読み込んだらまた作動しなくなりました。 なにか悪い事してるんですかね?
311 :
Now_loading...774KB :2005/06/13(月) 14:26:37 ID:glOS8MWP
>>310 試しに同じ階層に全てのファイルを置いて、同じ事してみたら?
as2からjava関係の人間が流れ込んできたのか スレの消費スピードが若干上がったな
>>310 > なにか悪い事してるんですかね?
それだけの情報では判断できないので、エスパーを待ってくれ。
念の為、ブラウザ確認時にキャッシュはクリアしてるよね?
パブリッシュ先に動画置いてないだけじゃね?
ああ、ごめん。
サーバの時間を取得したいんだけど ActionScriptでは無理かな?
317 :
304 :2005/06/13(月) 16:48:55 ID:DhvXZnia
(TextField内に文字を追加していくASの続き) hitTest()で当たった・当たらないの判定はできます。しかしTextFieldの 変数をtxtとしても、その後の文字列の操作が分かりません。 indexOf()などで文字を挿入する位置を決めるのでしょうか?
319 :
Now_loading...774KB :2005/06/13(月) 17:09:52 ID:glOS8MWP
>>317 変数名をtxtにしてるんだったら、
Aがヒットしたら → txt += "A";
もし、テキストフィールドの名前をtxtにしてるんだったら、
Aがヒットしたら → txt.text += "A";
じゃなくて?
320 :
304&317 :2005/06/13(月) 17:15:42 ID:QHnYt5cv
>>318 あるMCのXに
onClipEvent (enterFrame) {
if (_root.A.hitTest(this) == true) {
_root.txt="A";
}
if (_root.B.hitTest(this) == true) {
_root.txt="B";
}
}
と書きましたが、A,Bの動く速さが違うため、X(this)に当たる順番
から本来は、「AB」と表示さえるべき所ですが、実際は、「A」→「B」と
切り変わって表示されます。
どうしたものでしょうか?
>>319 Aがヒットしたら → txt += "A";
Aがヒットしたら → txt.text += "A";
----------
行き違いですが、有難うございます。
>>320 シンプルにXに
Aが当たってるならtxt="A"と表示
Bが当たってるならtxt="B"と表示
AとB両方が当たってるならtxt="AB"と表示
何も当たってないtxt=""と表示
としたいということでよいのかな?
323 :
310 :2005/06/13(月) 18:49:26 ID:DeNtUuur
レスありがとうございまする。
>>311 あとで試してみます。
>>313 キャッシュは、クリアしてまする。
>>314 もしやと思いましたが読み込むファイルは、確実にあります。
今帰ってきたけどこれから飲みなのです。
帰ってから確認してみます。
324 :
Now_loading...774KB :2005/06/13(月) 18:56:04 ID:IcQrARVi
初歩的ですいません フレームアクションで、aというクリップをアルファゼロになるまで アルファを下げていく書き方教えてください for (i =_root.a._alpha; i >= 0; i++){ _root.a._alpha -= 15; } これでは無限ループになるようです おねがいします。。
頼むから先ず頭を使ってくれ
>>324 ヘルプのforを良く読んでみよう。
iの値の変化をチェックしてみれ
ヒント for (初期化式; 条件式; 次処理式) { 処理 } ┌──┴─┐ │初期化式│ └──┬─┘ ┌───→| │ /\ │ / \ false │ < 条件式 >─┐ │ \ / │ │ \/ │ │ │true .│ │ ┌─┴──┐ │ │ │ 処理 │ │ │ └─┬──┘ │ │ ┌─┴──┐ │ │ │次処理式│ │ │ └─┬──┘ │ └-───┘ .│ ┌───┘
328 :
304&317 :2005/06/13(月) 19:49:31 ID:cwdNDiyB
(TextField内に文字を追加していくASの続き)
>>322 有難うございます。ここでの例は、Xに対してA,Bの2つだけですが、
目標はXに対して4種類×20以上で総計100個程になりますので、txt="AB"
のように予め用意しておく方法は妥当ではありません。
さて、txt += の方法を採用し、
onClipEvent(enterFrame) {
if (_root.A.hitTest(this) == true) {
_root.txt += "A";
}
if (_root.B.hitTest(this) == true) {
_root.txt += "B";
}
trace("txt= "+_root.txt);
}
とすると、TextFieldに文字列として追加されますが、enterFrameのせいか
txt= undefinedAAAAA・・・
txt= undefinedAAAAA・・・BBBBB・・・・
と1個のA,Bでいいところを、enterFrameの回数だけ追加されます。1回
ヒットにつき1個のA,Bとするにはどうすればいいでしょうか?
329 :
Now_loading...774KB :2005/06/13(月) 19:51:31 ID:glOS8MWP
>>324 これって、
_root.a._alpha = 0
と同じじゃ?
ほんとはforじゃなくてonEnterFrameを使ってループさせ、アルファが0になったら、終了。
みたいなことをやりたいのでは?
330 :
324 :2005/06/13(月) 19:51:48 ID:IcQrARVi
すいませんお手上げです これもダメなようで for (i=0; i <= 100; i++){ _root.a._alpha -= i * 15; } Whileもダメです ヒントください
>>328 onClipEvent(enterFrame) {
_root.txt = "";
if (_root.A.hitTest(this)) root.txt += "A";
if (_root.B.hitTest(this)) root.txt += "B";
trace("txt= "+_root.txt);
}
これでいい?
>>330 onClipEvent (enterFrame) {
if (_alpha>0) _alpha -= 15;
}
333 :
324 :2005/06/13(月) 19:58:55 ID:IcQrARVi
>>332 クリップでなくフレームアクションでやりたいのですが・・
>>328 最終的にどのように表示したいか、きちんと言ってくれないとね。
途中で、こうなっちゃったって、言われてもこまるし。
335 :
Now_loading...774KB :2005/06/13(月) 20:03:25 ID:glOS8MWP
>>328 これでどうだ?
onClipEvent(enterFrame) {
if (_root.A.hitTest(this) == true && !check_A) {
check_A = true;
_root.txt += "A";
}
if (_root.B.hitTest(this) == true && !check_B) {
check_B = true;
_root.txt += "B";
}
trace("txt= "+_root.txt);
}
_root.onEnterFrame = function(){ if (_alpha>0) _root.a._alpha -= 15; }
>>334 最終的にどのように表示したいか
MCのA,B,C,Dが上からズラズラ・・・と大量に流れて(落ちて)
Xにヒットした証拠として
txt=ACDBDABCACDBACCADBB・・・
と表示したいと思っています。
331,335さん有難うございます。ところで335の 「&& !check_B」と
「check_B = true;」のcheck_Bはどのような役割を果たしているの
でしょうか?
>>337 もし前のフレームで_root.B.hitTest(this)がtrueのときcheck_Bにtrueを代入して
現在のフレームでcheck_Bがtrueときは_root.txt += "B";を実行したくないからでしょうか
>>337 落ちるといういことは、一度ヒットしたMCはカウントしないのだろうし、
A,B,C...側のMCにカウントされたフラグがいるだろうな。
340 :
Now_loading...774KB :2005/06/13(月) 20:35:15 ID:glOS8MWP
>>337 一度ヒットテストのifを通過すると、この次からは
そのヒットテストのifに入らなさせています。
ABCDの方に書くのは?
onClipEvent(enterFrame) {
if (_root.X.hitTest(this) == true && !Check) {
Check = true;
_root.txt += "A";
}
}
_root.txt += "A";
↑ここはそれぞれの文字にして、BならB
>>331 AがBに変わっただけでした。
>>335 文法エラーが出て実行できませんでした。
>>338 うーん。実行できなかったのでなんとも。
>>339 A,B,C...側のMCにカウントされたフラグ
なんかヒントになりそうです。
あと書きそびれていましたが、的となるMCのXを小さくすることで、
1回ヒットのみを認識させるという小細工も考えられます。
>>340 ABCDの方に書くのは?
これもいいと思いますが、ABCDが全部で100個近くあるので
最終手段にとっておきます。
>>342 いや、多いからそちらに持たせないといけないのだが。。。
344 :
324 :2005/06/13(月) 20:50:17 ID:IcQrARVi
>>336 ありがとうございました、できました。。
>>342 まさか100個のMCを一個ずつ作る気じゃぁ・・・・(((( ;゚Д゚)))ガクガクブルブル
>>335 できました。原因は、check_A = true; の「;」を「:」としていたことです。
(合掌)
>>345 冷静に考えれば・・・そうですね。342の方が楽だった。1個1個
パラメーターを設定するような感覚で勘違いしていました。
全体的にうまくイキました。Thxです。
347 :
310 :2005/06/14(火) 11:30:45 ID:Vp60UCpr
遅くなりましたが今イロイロやってみて原因がわかりました。 ありがとです。 DreamWeaverでSWFを埋め込んだHTMLが 親SWFと同じ階層にないと子SWFが、読み込まれないのでした。 しかし、なんでなんですかね? これって当たり前の事なのですか?
>347 深く考えずに、絶対パスを使用することをおすすめする。
349 :
Now_loading...774KB :2005/06/14(火) 13:34:41 ID:xGZ3CbGq
>>347 それは、作った人がこっちの方が(・∀・)イイ!!と思った体。
以前ここで教えてもらったムービークリップを震えさせる アクションスクリプトなんですが、小さいクリップでは問題なかったのですが 大きいクリップに大きな触れ幅を指定すると 中心位置が、左やや上にズレたままで表示されてしまいます (クリップ自体の登場位置がズレる) 原因わかりますでしょうか。 onClipEvent(load){ var rangex =50; var rangey = 50; var defx=this._x; var defy=this._y; } onClipEvent(enterFrame){ this._x=defx+(Math.random()*(rangex/5)-rangex); this._y=defy+(Math.random()*(rangey/5)-rangey); }
351 :
350 :2005/06/14(火) 16:48:21 ID:0qQANLcB
こんな感じです
★…
>>350 のクリップアクションをつけたムービークリップ
┌────┐┌────┐
│ ││★ │
│ ★ ││ │
│ ││ │
└────┘└────┘
左のように配置したものが
右のように表示されてしまいます
なぜでしょうか
this._x=defx+(Math.random()*(rangex*2)-rangex); this._y=defy+(Math.random()*(rangey*2)-rangey); これだと、どう?
Math.random()*(50/5)-50 値が-50≦n<-40になる。そこ変えればいんじゃね? つーか、コピペ思考停止(・A ・) イクナイ!
354 :
350 :2005/06/14(火) 17:03:59 ID:0qQANLcB
>>352 それでOKでした・・・触れ幅も下げて。
ダサいですね。ありがとうございます。
>>353 はい。ぶっちゃけ式の原理がわかってません
勉強します。
小数の桁数を指定する方法のヒントを教えてください 0を"0.00"に変換したいです
loadMovieについての質問です。 背景となるswfを作り、そこにメニューやコンテンツなどを直接配置せず、 他のswfとして作ったものを読み込んで扱いたいと考えています。 そのためのテストとして、まず黒背景+ボタンを適当に配置したroot.swfと、 文字を書いただけのlv2.swfを用意します。サイズは両方同じです。 root.swfのほうからloadMovie("lv2.swf",2);として_level2に文字のみのswfを読み込んだのですが、 root.swfで作ったボタンが全て隠れてしまいます。 lv2.swfで作った文字以外の部分は透明にして、 下にあるroot.swfのインスタンスが見えるようにしたいのですが、 方法がさっぱりわかりません。 背景を透明にしてパブリッシュも違うようですし・・・ やり方分かる方がいらっしゃいましたら教えてください。
>>355 小数を文字列にしたいならわかるけど。
ゼロつければいい。
数字だったら0と0.00は一緒で、変換も何もない。
>>356 loadMovieとloadMovieNumのヘルプを読めばいいよ。
背景を透明にしてパブリッシュなんてあったっけ?
自己解決しました
おーい、回答した後にそれ一言かよ。
いえ、してないです
ワラタ日記に載りそうだなw
>>355 var hoge = 0;
var hage = String(hoge) + ".00";
まあ、その態度だとこの先レスは期待できんかもね
363 :
Now_loading...774KB :2005/06/14(火) 23:22:54 ID:wFGY1plE
どのようにして、解決に至ったのかな?
解決してないってことなのか?回答していないってことなのか?
落ち
うおぉぉぉい! おじさん泣けてきたよ!
367 :
Now_loading...774KB :2005/06/14(火) 23:58:01 ID:xGZ3CbGq
>>366 (´・ω・`)オマイ、ワルクナイ。キニスンナ。ハズレクジヒイタダケダ。
目的地に向って減速しながら近づいて やがては目的地に到着して止まる動きを作ろうとしているんですけど。 よく本とかにのってるのは、_x座標について考えるならば _x=(目的地-現在地)/減速値; っていうスクリプトがあると思うんですけど。 これだと減速値をものすごく大きな数字にすると 目的地に到着する前にMCが止まって動かなくなってしまいます。 減速値を大きくしてもしっかりと最後まで動いて 目的地に到着するようにするにはどんなスクリプトにすればいいのですか?
369 :
Now_loading...774KB :2005/06/15(水) 01:34:58 ID:vUNTapkS
mc一個で別のmcを表示/非表示にするASなんですが、 onClipEvent (load){ if(mc1が表示){mcがクリックされたら非表示} if(mc1が非表示){mcがクリックされたら表示} } ってやるとmc1が表示されてるときしか反応しません。 表示→非表示にはなりますが、非表示→表示ができないのです。 どうしたらできるようになりますか?
>>368 _x=(目的地-現在地)/減速値 + 1;
これを元に
>>369 間違いが2個。
それはload文にいれるものじゃない。
_visibleがfalseならクリックできない。
371 :
Now_loading...774KB :2005/06/15(水) 01:48:08 ID:ESLwbaGT
>>368 _x = Math.sin(90.0/全体のフレーム数*フレーム*PI/180.0)*距離;
でええんでないかい?
372 :
Now_loading...774KB :2005/06/15(水) 01:52:47 ID:vUNTapkS
>>370 enterFrameでもできない・・・
ためしに_visibleを_alphaにして、表示=100、非表示=0でやってみてもできませんでしたorz
onClipEventじゃないんですかね?
373 :
368 :2005/06/15(水) 03:16:16 ID:44vS5YxJ
>>369 >>372 説明のためASを書く場合は表示/非表示なんて曖昧な書き方はしないこった。
そこに間違いがあるかも知れないんだから。
そういう先入観もってデバッグしてるから、
いつまで経っても動くASが出来ないんじゃないのかと。
onClipEvent(mouseDown) {
_root.mc1._visible ^= _root.mc.hitTest(_root._xmouse, _root._ymouse, true);
}
>>368 >>373 意外とそれは難しい問題だな・・・。
割と普通に用いられるのは、タイマーを使ったり
>>371 のアイディアのようにフレームのをカウントしたりして、
それで位置を変えるやり方。簡単なのは、おそらくそういう方法だろう。
mcをx = 500の位置に動かしたい場合、
例えば↓こんな感じ。
onClipEvent(load) {
prog = 0;
x0 = this._x; // 初期位置を保存
}
onClipEvent(enterFrame) {
this._x = x0 + (500 - x0) * Math.sqrt(Math.min(1, prog));
prog += 0.1; // ←増分を変えるとスピードが変わる
}
これは平方根の関数を使って減速しつつ近づく動き。
>>371 は同様にsin関数を使っている例ですな。
ただ、
>>375 のような方法だと、初期位置を記録したりしなくてはならず
面倒だったりもするので、出来れば位置だけの関数で動きを
記述する方法が良いと思うかも知れない。
_x+=(目的地-現在地)/減速値
だと目的地に近づいたときに変位が小さくなりすぎることが
止まってしまうことの原因なので、それを補正するような項を入れれば良い。
簡単にやるとしたら例えば↓こんな具合かな。
onClipEvent(load) {
brake = 100; // ブレーキの強さ
dist=10; // 低速/高速の境となる距離
}
onClipEvent(enterFrame) {
prog = Math.exp(-Math.abs(500 - this._x) / dist);
this._x += (500 - this._x) / brake * (1 + brake * prog);
}
ただ、微分方程式を解くと分かる通り、下手に非線形項を入れると
振動する可能性が出てくるので、注意が必要。
>>372 どうしてenterFrameかloadを使うんだ?
どっちも間違いだ。
ASを勉強しているものですが、 描画メソッドはグラフの作成以外で使用用途はあるのでしょうか? 複雑な絵を書くのにはむいていないような
>>381 データを用意するなり、計算で作るなりして描画メソッドに渡せば無問題のような。
2点を結ぶ直線とか曲線が作れればあとはそれの応用なり。
>>382-383 ありがとうございますm(_ _)m
やっぱり、ActionScriptで描画しようと思うなら
数学Bのレベルは必要ですか・・・orz
385 :
Now_loading...774KB :2005/06/15(水) 20:25:20 ID:LhXWKwYX
386 :
Now_loading...774KB :2005/06/15(水) 22:42:41 ID:iTahedS7
ソフト:FlashMX2004 attachMovie()中のeval()の使い方に関する質問です。 1〜4の数字をランダムに発生させ、リンケージされたMCのA1〜A4からランダム に新しいインスタンスA5以降を発生させるASとして、onEnterFrame中に i=1; num = Math.floor(Math.random()*4)+1; newName=eval("A"+(i+4)); prop={ _x: 5*i, _y: 20}; _root.attachMovie("eval("A"+num)", newName ,i , prop); i++; trace("i= " +i); と書いたところ、attachMovieの行でエラーメッセージ 「")"か、","が必要です」が出ました。 上の記号の付け所が分かりません。どう改善すべきでしょうか?
_root.attachMovie("eval("A"+num)", newName ,i , prop); ↓ _root.attachMovie(eval("A"+num), newName ,i , prop); ↓ できればevalは使わずに ↓ _root.attachMovie(this["A"+num], newName ,i , prop); それに newName=eval("A"+(i+4)); この部分もおかしいような気がする。 newName="A"+(i+4); こうじゃないかな? 何かをコピペだけして意味を調べないってのはあまりよくないよ。 >リンケージされたMCのA1〜A4からランダムに新しいインスタンスA5以降を発生させる ここ日本語そのものが意味ワカンネ。発生ってなんじゃい。
っていうか、そもそもevalいらないような、 _root.attachMovie("A"+num, newName ,i , prop); これじゃ駄目なん? 何がしたいのかいまいち・・・。
389 :
Now_loading...774KB :2005/06/15(水) 23:05:46 ID:FiyG9/4I
((("A") ("A"))) Σ("A")
>>386 エラーメッセージ出てるならその通りだろ?
391 :
386 :2005/06/15(水) 23:38:02 ID:iTahedS7
ありがとうございます。玄人の方を混乱させていうようなので補足を。 まずevalを使ったのは、インスタンス参照を文字列+数字の組で実行 しよう思ったからです。 また画面に何もない状態から始めるので、元のMC:A1〜A4から新しい A5以降を作製するのにduplicate()ではなく、attachMovieを使って います。 このようにして、元のMC:A1〜A4からA50・・・A100・・・A200と大量 に作りそれぞれに固有の動き(固有のたて軸で固有の速さ)を持たせる ことを最終目標にしています。 ※ASでの配列の使い方の理解が全然分かってませんので、この理解に 役立つサイトをご紹介下さい。
で、できたの?できなかったの?
>>392 すみません。結果が出次第、報告します。
>>375-376 ありがとうございます。
仕組みとか理解しようとしても太刀打ちできない自分がいます。
いろいろ教えてもらったのですが、
結局Flash5では動かす幅が0.04以下になったら画面上のmcは動かないみたいなので
0.04以下になったら0.05づつ動かして途中から等速運動になっちゃう
っていうやり方でいくことにしました。
>>391 そもそもevalとタダの文字列と、その辺ちゃんと区別して理解できていないようなので、
まずはそこからはじめるといいかもね
>>387 , 388, 395
有難うございます。お陰で、最終目標の1歩手前まで行けました。
※配列の資料は自分で探してみます。
action scriptでテトリスの作り方を1から紹介しているサイト知っている方が いたら教えて下さい。
>397 グーグル先生が知ってるって言ってた。
400 :
Now_loading...774KB :2005/06/16(木) 23:15:41 ID:DEWOeNrf
インスタンス名の識別法の質問です。 ソフト)FlashMX2004 例えばhitTest()で識別するとき、ABC1,ABC2,ABC3,と、先頭に ABCが付くグループ(ABCxxx)とDEF1,DEF2,DEF3,とDEFで始まる グループ(DEFxxx)があり、MCのXにとにかくABCxxxがヒットすればOK というASはどうなりますでしょうか? もしsubstrが使えるなら、 for(i=1; i<=xxx; i++){ if(X.hitTest(ABCxxx) && ABC==ABCxxx.substr(0, 3)) { 〜 } } の形になるのでしょうか?
>>400 変数使ってMC指定する方法で躓いている人って意外と多いですね。
このスレには同じような質問が多数。
それを修正するとしたら↓こうかな。
for(i=1; i<=xxx; i++){
if(X.hitTest(this["ABC" + i])) {
//
}
}
this[変数]とか_root[変数]とかABCxxxの親のMCが何かによって変わるけど。
基本は、[ ]内に文字列を入れて指定する。
MCの名前を文字列として取得したいときは、_nameを使う。
if (ABCxxx._name,substr(0,3) == "ABC")
いまの場合は、MC名がABCxxxであることは間違いないので
if条件の&&以降は必要なくなるけども。
どれかにヒットした場合に一つの処理をするなら、こんな感じでしょうか。
bHit = false;
for(i=1; i<=xxx; i++){
bHit |= X.hitTest(this["ABC" + i]));
}
if (bHit) {
// ヒットした場合の処理
}
おっといけない。良くあるタイプミス。
>>401 MC名を使う場合は、_name。
if (ABCxxx._name.substr(0,3) == "ABC")
↑ピリオド
MCを配列に入れちゃうのが一番スマートだと思うんだけどなぁ。
404 :
400 :2005/06/17(金) 01:40:24 ID:U2w+nvuE
>>401-403 有難うございます。
ところで、401の bHit |= X.hitTestの演算子「|=」の意味は
「いづれか一つ(必ずしも等しくなくて良い)」ということでしょうか?
403:よろしければ記述ヒントを教えて下さい。
だからMCを配列に・・・
>>404 a |= b;
これはOR演算子(正式名称はよく知りません)
↓これと(ほぼ)同じ。
a = a || b;
ループを回す中で途中一回でもhitTestがtrueになったら
ヒットしたってことなのでORでひたすら繋ぐ必要があるので、それを使ってます。
bHitがfalseになるのは、すべてのhitTestがfalseの場合のみで、
それは結局、全てのABCxxxがXとヒットしなかった場合のみ。
trueになるなら、どれか一つ以上がヒットしたということに。
ついでに
>>403-405 MCを配列に入れるというのも解説。
大量のMCを作ってそれをASで操作したい場面ってのは良くあります。
その際、MCを識別するのは、MCのインスタンス名、ABC1とかABC2で、
それをAS中で指定するには、
>>401 のように_root["ABC" + i] とかします。
けれど、毎回["ABC"+i] とか記述するよりは、簡単に何番目のMCとかいうように
数値で指定できたほうが効率が良い。
なので、そうするためにMC(の参照)を全部配列に、
ぶち込んでしまうという方法があります。
ABC1, ABC2, ABC3のMCがあるとき、
すべてのMCを非表示にしたい場合、
>>401 の方法だと
毎回"ABC"+i とか名前を作らないといけませんが。
for(i = 0; i < 3; i++) {
_root["ABC" + i]._visible = false;
}
最初にMCを入れた配列を定義してしまえば、
mcList = new Array(_root.ABC1, _root.ABC2, _root.ABC3);
このように簡単に。
for(i = 0; i < mcList.length; i++) {
mcList[i]._visible = false;
}
こうなるとMCの名前がABCxxxだったかどうかなんて覚えてなくても良く
数値変数 i だけで指定できるのですっきり書けて、実行速度も向上。
間違いも少ないという具合。
>>406 普通はhitTestがtrueになったらbreakだろ。
そうねぇ、OR演算子は可読性を低下させるからお勧めできないかなぁ。 C方面の人はそういうの好きだけど、java方面の人は嫌いだね。
ある病院で輸血が必要になりました。 ストックがないので提供者を募ったところ何人も提供を申し出てくれました。 必要な血液型はO型で提供者はみんなO型でした。 でも、間に合わなくて患者は死にました。 全員の血液型判定が終わるまで提供しなかったからです。
先生! MCをアタッチする度に"どこにあるか"を配列にぶち込もうとしているのですが Mc = "Mc"+i; Mc = _root.attachMovie("Clip",Mc,i); Addr = _root.Addr_array.unshift(Mc); とすると、トレース結果が Addr: _level0.arrowMc6,,,,,, 等という面白い事になってしまいます。 これは僕、何かやっちまってるんでしょうか(;'Д`)
Addr: _level0.Mc6,,,,,, デシターッ
(´・ω・`)MCをアタッチする度に配置したMCの場所を配列にぶち込もうとしているのです。
416 :
411 :2005/06/17(金) 17:10:27 ID:O/eDy7t9
>>414 _root.Addr_array ですね。
よく見たら上の式間違ってますね・・・。
そういえば配列記述するためにエクセルでAS書いてたヤツいたな
418 :
Now_loading...774KB :2005/06/17(金) 18:13:23 ID:90fDTsc8
>>406-409 Thxです。返事が遅れましたが、当初の問題は401さんの
for(i=1; i<=xxx; i++){
if(X.hitTest(this["ABC" + i])) {
//
}
で(テスト段階ですが)成功しています。
次回は配列を利用したASにステップアップしてみます。
※406-407のID:1FtcwuuUさん。懇切な説明、恐れ入ります。
onMouseDown = function () { trace("Click!!"); gotoAndStop("gameover",1); } これを特定のシーンだけ効かないようにしたいのですがどうすればいいでしょうか MX2004 WinXP AS2.0
421 :
Now_loading...774KB :2005/06/17(金) 19:52:16 ID:fqhUJA51
>>420 AS2.0なのに、Fla4の命令を使うのはどうかと思う。
423 :
Now_loading...774KB :2005/06/17(金) 20:53:12 ID:fqhUJA51
>>422 まじでか。
じゃあ正しい方法を教えて下さい。
(できればそのシーンにしか通用しないだけのとか)
>シーンにしか通用しない これが意味不明。通用ってどういう意味だ? 自分が分かってても他人に理解不能な言葉を使うから誰も答えられない。
425 :
Now_loading...774KB :2005/06/17(金) 21:08:38 ID:fqhUJA51
日本語まちがってた
>>420 は実行されたアトずーっと続くけどそうじゃなくてそのスクリプトをいれたフレームの直下というか通ってるところしか効かない。
もしかして、わざとやってる?
シーンじゃなくてフレームじゃねの? またはワンシーンの中でずっと有効にしていたいとか
ボタンシンボルを使えば良いだけとか?
質問です。 読み込んだswfファイルで困ってます。そのファイル内で定義した変数が全部NaNになってしまいます。 元のswfファイル単体で再生すれば、意図どおりの数値が出力されてます。 読み込む場合でも正常な数値を出力させるにはどうしたらいいでしょうか。
ちなみに読み込んだだけが原因で全ての値がNaNになるってことはない
読み込む元 base.swfのAS _root.onLoad = function() { a = 0} _root.onEnterFrame = function() { a +=1; trace(a); } 読み込み先のファイル test.swfのAS _root.test_mc.loadMovie("test2.swf"); 新規のファイルで試してみましたが、上の記述で同じ結果でした。 どの部分が問題なのかわかりません・・・・
433 :
Now_loading...774KB :2005/06/18(土) 02:34:50 ID:leX/au7g
>>427 そうそうフレーム。
>>428 ゲームの性質上全部塗りつぶしてボタンにするのは無理なんです。
だからマウスクリックを検知したらgotoAndstop("gameover",1)に逝くようにしたいんです
何を質問したいのかサッパリわからん クリック検知したいだけならリスナー使えばよかろう
>>432 とりあえず_lockrootをつけてみる。
またはNaNになるってことは a=0 を通ってないんでないのかな、とか考えてみる。
>>435 Listenerのことです。
あんまり無理するな。
質問です いまシューティングゲームに似てるようなゲームを作ってるんですが MC 1とMC 2があって同じASを記述してるのですが、 onClipEvent (enterFrame) { if (this.hitTest(_root.tama)) { this.visible = 0; } } 片方しか反応せず困ってます誰か助けて・・・
>>437 同じなの貼っちゃ駄目だろwwwww
反応しないほうを
if (this.hitTest("反応する方のMCのパス")) {
と書き換えてみたら?
439 :
437 :2005/06/18(土) 08:18:07 ID:hsau6WqL
>>438 だめでした。
それともしかしてこのスレに同じ質問がありました?
MC(mtx)をシンボルにして、そこにテキストフィールド(otxt)を配置しました。 これをattachMovieで呼んだときに、textを再設定しようとしましたが、 元々設定している"元の文字"という文字列が変更出来ません。 これは、出来ないものなのでしょうか? otxtにはフォントの埋め込みをしていて、元の文字の 設定行をコメントアウトすると変更後が表示されます。 ○シンボルのMC(mtx)のAS this.otxt.text="元の文字"; rot=0; this.onEnterFrame=function () { rot+=0.05; this.otxt._alpha=Math.abs(Math.sin(rot)*100); this._x++; this._rotation++; } ○アタッチする方のAS Opy=10; for(i=0;i<10;i++){ this.attachMovie("mtx","mtx"+i,100+i); this["mtx"+i]._y=Opy+50*i; this["mtx"+i].otxt.text="ほげほげ"+i+"番目"; }
>>437 二つ。
>this.visible
→this._visible
>this.visible=0
→this._visible=false
visibleには「_」アンダーバーが必要だし、_visibleは「0」とか「100」じゃなくて(これは_alpha)、trueかfalse。
>>440 多分、メインのタイムラインで一回設定はされてるんだけど、そのMCの一フレーム目を、メインのタイムラインを読み終わってから読むのでその際に再設定されているのだと思う。
traceとかデバックとか使って、順々に見てみてはいかが?
>>432 > _root.onLoad = function() {
onLoadはこういう使い方をするものではない。
メインタイムラインにa=0;では困るのか?
444 :
Now_loading...774KB :2005/06/18(土) 13:59:35 ID:6TkWsc6G
action scriptでシンボルの大きさを変えるには、どの様に書けばよいのでしょうか。 お願いします。 MX2004を使ってます
446 :
444 :2005/06/18(土) 15:15:22 ID:6TkWsc6G
>>445 返信ありがとうございます。
以下の記述でやってみましたがだめでした。
どこを直せばよいでしょうか。
_root.test._xscale+=500;
パスが通っていない
>>446 _xscaleが何か調べたか?
446の用途なら_width、_heightだな。
MCにどんなプロパティがあるかを調べるくらい
そんな難しいことでもないと思うんだが。
449 :
444 :2005/06/18(土) 16:10:57 ID:6TkWsc6G
450 :
432 :2005/06/18(土) 16:15:13 ID:iFGmJAuP
>>436 >>443 お二人の言われている部分を直したら解決しました。
パスの指定がずれていたみたいです。一つ勉強になりました。
ありがとうございます!
>>442 レスありがとうございます。
アドバイスを元に試行錯誤したのですが、
結局、不本意ながら呼ぶ側の2フレームに
以下のコードを記述することでなんとなく
求めている感じのものにできました。
○呼ぶ側の2フレに記述したAS
for(var i=0;i<10;i++){
if(i%2){
this["mtx"+i].otxt.text="ほげほげ"+i+"番目";
}
}
stop();
attachの時点で設定できると良いのですが。
フレームアクションなんては 基本的に使わないようにするのがコツ。
>>451 そんな面倒くさいことやるのも厭わないなら
>>440 のmtxのASで適当に条件を付けて文字列を
初期化するようにすれば良いのではないのかと。
if (this.otxt.text.length == 0) this.otxt.text="元の文字";
とか
if (this.otxt.text.indexOf("ほげほげ") != 0) this.otxt.text="元の文字";
とか。幾らでも方法はあるでしょうに。
>>453 それは出来るでしょうけれど、そんな汚いコードは勘弁してください
455 :
Now_loading...774KB :2005/06/19(日) 10:10:28 ID:97g7bNR2
ケンカだめ! ヽ(`Д´)ノ
はじめまして、よろしくお願いします。 ギミッ〇スのような構成の中で、1つ前のシーンに戻るボタンの記述が なかなか上手くできません。 再生したいシーンのフレームは連続で同じ1つのレイヤーに並べているのがまずいのでしょうか? ボタン一つで前シーンの再生の上手いやり方を教えてください。
457 :
Now_loading...774KB :2005/06/19(日) 16:05:24 ID:kkftLKpa
>>454 コードの綺麗汚いが気になるなら、
mc生成&初期値とテキスト生成&初期値のクラス作ればいいのに。
458 :
440 :2005/06/19(日) 16:47:28 ID:cUeXtu2L
>>457 気にさわったら、申し訳ないですが、質問自体を見て頂ければ、
シンボルを使ってまさに、そういったことをしているのにうまくいかない、
ということを言っているのが分かると思います。
それに対して440に書いたmtxのASの一行目の代入文と同じことを、
変なコードにして解答されたので、コンパイルは通るけど、
と言う意味で書きました。私は間違っているでしょうか?
459 :
Now_loading...774KB :2005/06/19(日) 18:17:39 ID:97g7bNR2
おまいら、落ち着けよ。みんなシーンとしてるだろ。 この先は不毛の戦いだ。やめなさい。 ヽ(`Д´)ノ
>>458 ずばり間違ってるから。
質問したくせに答えてもらってそのコードを汚いなんて言うなら
あと誰も答えてはくれないよ。
>>455 誰かがこうやって線を引いて
戦闘開始!!
>>458 お前可愛いな。
取り敢えず文句言う前に「ありがとう、参考にします」位は・・・。
あとあんまり関係ないんだけど。
最近のFla板って、もしかして中高生しか居なかったりする?
463 :
Now_loading...774KB :2005/06/19(日) 21:05:15 ID:p4NKSA1r
>>460 じゃあお前のその下らない質問に答え出しておくよ。
this.otxt.text = "元の文字";
↓
if(this.otxt.text==undefined) this.otxt.text = "元の文字";
これだけだ。
はい、次。
464 :
463 :2005/06/19(日) 21:06:02 ID:p4NKSA1r
465 :
質問 :2005/06/19(日) 22:00:49 ID:8WJ0Cifm
超初心者です。回答お願いします。 環境はWinXP MX使用です。 マウスに追従して物体を360℃水平に回転させようとしています。 今ASは以下の状態です。 onClipEvent (load){ this.stop(); Num=1. function move(){} aX=_root._xmouse; if (aX>bX){} Num+=speed; if (Num>3) {} Num=1+speed; } } else { Num -= speed; if (Num<1) { Num=3-speed;} } bX=aX; frameNum=Math.round(Num); this.gotoAndStop(frameNum); updateAfterEvent();} } onClipEvent (mouseMove) { move();} } シンタックスチェックによると11行目の} else {辺りが間違っているそうです。 誰かお助けください。お願いします。
>>458 間違っているね。
>>440 の問題に対して
>>451 で上手くいったことからも分かる通り、
attachMovieしたあとでmtxの1フレーム目のフレームアクションが
実行されるため、attachMovieの際に一旦は文字が設定されるんだけど
それがまた上書きされてしまって"元の文字"に戻ってしまうのが
問題なのであるからして、それを防ぐための回答として
>>453 は完璧。
決して変なコードではない。
要は随所に記述したアクションが呼ばれる順番を理解してないために
躓いてるんでしょうから、各所にtraceを入れてみて、
実際にどういう順番で実行されるのかぐらい確認したら良いがな。
てか、
>>442 ですでにそういう回答されてるじゃん。
>>465 何なんだそのコードは・・・。
少なくとも開き括弧と閉じ括弧の数が合ってないと
絶対に動かない。まずは、そこを確認すべし。
とりあえず、数箇所で見られる
{} ←こういうのは、普通の使い方としてはあり得ない。
468 :
465 :2005/06/19(日) 22:16:14 ID:8WJ0Cifm
レスありがとうございます {}こういうのはそのままとっちゃってもいいのでしょうか…??
>>468 自分で理解できる範囲で作りましょう。
少しずつ上達すればいいんだから。
470 :
465 :2005/06/19(日) 22:25:09 ID:8WJ0Cifm
>>469 ありがとうございます。・゚・(ノД`)・゚・。
でも仕事でそういうのを作ってほしいと頼まれてしまって、
基礎が固まってない状態で色々参考にしてたらこんなコードになってしまいました。
ご教授お願いします…
471 :
440 :2005/06/19(日) 22:31:25 ID:cUeXtu2L
スレ汚し失礼しました。ただ、初期値の代入文になぜifを付けるのか分かりません。
簡単にいうと、
aa="初期値";
と書いてあるところを
if(true)aa="初期値";
にしなさいと言われているので、それは勘弁してくれと。。
ちなみに、
>>453 のコードも実行してみましたが、解決になりませんでした。
汚いコードは言い過ぎました。申し訳ありませんでした。
スレが荒れるのは本意ではないので、この謝罪で440関連の話題は
終了させてください。
>>470 仕事か・・・。
それがどういうものか知らないけど、
少なくとも文法上は問題がないようにするなら
↓こうかな?おそらく。
onClipEvent (load){
this.stop();
Num=1;
function move(){
aX=_root._xmouse;
if (aX>bX) {
Num+=speed;
if (Num>3) { Num=1+speed;}
} else {
Num -= speed;
if (Num<1) { Num=3-speed; }
}
bX=aX;
frameNum=Math.round(Num);
this.gotoAndStop(frameNum);
updateAfterEvent();
}
}
onClipEvent (mouseMove) {
move();
}
473 :
465 :2005/06/19(日) 22:43:47 ID:8WJ0Cifm
>>472 ありがとうございます!!
今度はエラーになりませんでした!
自分でも文の正誤が分かるように研究させて頂きます。
ありがとうございます。・゚・(ノД`)・゚・。
参ったな
>>440 がフレームアクションをデフォにしたコードを乱発したら
読みづらいASで蔓延してしまうぞ
476 :
Now_loading...774KB :2005/06/19(日) 23:37:26 ID:p4NKSA1r
>>471 >>442 でも出てるけど、
親MCがattach後に値を代入した場合、
attachされた子MCの1フレーム目よりも先に値の代入が行われる。
なので、440の例の場合は
this["mtx"+i].otxt.text="ほげほげ"+i+"番目";
が代入された後で
this.otxt.text="元の文字";が代入される。
それを防ぐ為にifを使い、もし値があれば値を書き換えないとするだけ。
ちなみに、これはこれっぽっちも変な処理じゃない。
変に思うのは処理の流れを知らないのが原因。
知らないのは悪い事じゃないし、質問するのもいいけど、
ちゃんとレスされた回答を理解しようと考えよう。
477 :
MIYU :2005/06/20(月) 00:04:17 ID:74cuKkIW
初めまして、よろしくお願いします。 テニスゲームを作りたいと考えているのですが、 コンピューター側のスクリプトをどうすればいいのか分かりません・・。 アクションスクリプトは初心者で、何かサンプルがあればいいのですが、この手のゲームのサンプルがみつからなくて、どうしたらいいのか分からないで困っています・・。 とりあえず、「ブロック崩し」を応用させたらいいだろうと思っているのですが、コンピューターに玉をどうやって拾わせるのか、ミスをさせるにはどうしたらいいのか・・。 まったく分からず困っています。 どなたかご存じの方いらっしゃいましたら、お手数ではありますが、教えて頂けませんでしょうか。 レスをお待ちしております。
>>477 それって25年くらい前にBASICのプログラム例題としてあったようなテニスゲームですか?
いきなり止まっているようなのでちょっとアドバイスしたら作れるようなレベルなのかが不安ですが・・・・
どの程度まで出来ているのですか?
・・・あ〜なんか作ってみたくなった。なつかしいな。
まあ、ブロック崩しが出来るなら簡単かもね。 こっちが打った瞬間に到達目標ポイントを計算。 そこに向かって移動し、追いつけたら拾う。 移動の最高速度を決めておいて、 それで敵の強さをコントロール。
480 :
MIYU :2005/06/20(月) 00:57:25 ID:74cuKkIW
>>478 さん
25年位まえっ??
しかもBASICのプログラム例題って何ですか??
どの程度・・。いや、まだ実際作ってはいないんですが、
初心者です〜〜〜(><;)
481 :
MIYU :2005/06/20(月) 01:01:10 ID:74cuKkIW
>>479 さん
なるほど!!ありがとうございます!!
到達目標ポイントを計算・・。
ちょっとホントに初心者なもので・・。
でも調べようにも何をどーすればいいのかも分からなかったので、
助かります。
ちょっと調べてみます!!ありがとうございます(^^)
483 :
MIYU :2005/06/20(月) 01:09:43 ID:74cuKkIW
>>478 さん
こーゆーのこーゆーの!!!モロ!!です!!
>>482 これおもしろいな
スペースおしまくると
>>454 どう考えても
>>451 のソースの方が汚い
バカのお前のためにわざわざ回答者が書いたソースの美しさが気になるなら二度と人に聞かずに独学で作れカス
参考書のソースも、汚いことがあるからお前みたいな潔癖症の人間は見ないほうがいよ。これは煽りじゃなく、アドバイスね。真摯な。
if ( ) hogehoge; この省略形を知らないと見える。
質問します MX2004proです Flash lite 1.1を作っていますが、おかしな事になりました fscommand2のGettimeminute、secと_rotationのminute*6、sec*6のASをメインフレームに書いているのですが、何故か針がおかしな動きをします 具体的にはたまに針が少しずつ短くなったり、45の位置から15の位置に飛びそのまま回ります もちろん乱数などは使ってません 今、手元にPCないんで詳しく言う事は出来ませんが原因がわかりましたら教えて下さい
>>488 階層構造がしっかりしているXMLだからこそ、そのサンプルのように
nextSiblingなどで簡単に次の項目に移動できたりする気がします。
現在表示中のノードの親ノードは、全アイテムの一覧を子ノードとして
保持しているので、その中から適当に選ぶようにすればランダムも容易かと。
jump_btn.onRelease = function() {
tempSlideNode = currentSlideNode;
while(currentSlideNode == tempSlideNode) {
currentIndex = Math.floor(Math.random() * currentSlideNode.parentNode.childNodes.length) + 1;
currentSlideNode = currentSlideNode.parentNode.childNodes[currentIndex - 1];
}
updateSlide(currentSlideNode);
}
>>490 ありがとうございます。
ランダムに生成したcurrentIndexをchildNodes[n]で読むわけですか。
教えていただいたコードの半分も理解できないのが悔しいです。
精進します。
492 :
Now_loading...774KB :2005/06/20(月) 14:14:12 ID:YfXcyK+1
ソフトはFlashMX2004にて。 ランダムな4桁の4進数(0〜3)の発生方法を教えて下さい。 例えば、「4,3,4,1」,「0,1,1,4」,「3,3,1,2」・・・という感じ です。 これには、0〜81(3の4乗)の乱数をrandom()で発生させて、toString で4進数化し、一桁づつ区切りを付けるという方法を考えましたが他に 良い案はありますでしょうか? 宜しくお願い致します。
>>492 toStringで4進化ってできるんすか?
494 :
492 :2005/06/20(月) 15:02:50 ID:hdf/PmUN
>>493 nを10進数として、n.toString(4)で出来るようです。
495 :
Now_loading...774KB :2005/06/20(月) 15:44:52 ID:p6YU3foF
Flash Communication Server MXで行き詰まったので質問させてください。 テキストチャットで入室や退室時に、サーバーのほうから共有オブジェクトにメッセージを送り、 共有オブジェクトへの接続者に入退室の言葉を表示させたいのですが、例えばmain.ascで、 so = SharedObject.get("test"); so.send("sayHello"); として、クライアント側のswfファイルのActionScriptの共有オブジェクトのfunction内に、 so.sayHello = function(){ trace("こんにちは"); } としてみても、ログには"こんにちは"と表示されません。 どうやったら上手くいくでしょうか? 本を読んだり、ぐぐってみてますがぜんぜん上手くいきません。 よろしかったらどなたか助けてください。
>>492 その方法で十分だと思うんだけど。
とりあえず4進数に4が出てきちゃだめだな。0〜3のみ。
4桁なので、発生させるべき乱数は 4^4=256
配列の用意まで一気にやるならこんな感じかな。
trace((256 + Math.floor(Math.random() * 256)).toString(4).split("").slice(1));
497 :
492 :2005/06/20(月) 20:20:26 ID:QRAi3KjG
>>496 ありがとうです。
・・・そうですね。0〜3でした。
>>496 何もそんなトリッキーな方法使わなくても、forループ4回回せばよいだけのような気が。
499 :
Now_loading...774KB :2005/06/20(月) 21:57:53 ID:y4Rzul2q
確かにそうだ。4つ程度なら、これで良い。 new Array( Math.floor(Math.random() * 4), Math.floor(Math.random() * 4), Math.floor(Math.random() * 4), Math.floor(Math.random() * 4) );
>>496 ひどいな・・・・そんなに配列つかうなよ。無駄なメモリ使いすぎ。
>>499 これが一番スマートなやり方かな?
>>500 >>499 と比較すると
>>496 は文字数半分程度で済んでいるので
処理の途中で配列が一つ多く使われるけども、
AS字数分も含めたトータルのメモリ使用量に関してみると
どっちが軽いかは自明ではないような。
まあでも、可読性では圧倒的に
>>499 なので
よっぽどムービーの容量削ったりする必要がない限りは
普通に
>>499 のように書くのが良いと思うが。
503 :
Now_loading...774KB :2005/06/21(火) 00:15:43 ID:0YfQSYFV
単純にこれでもいいんじゃね? a = [] for(var i=0;i<4;i++) a.push(Math.floor(Math.random()*4))
ここに天邪鬼な俺が来ましたよ
random4 = function (){ return Math.floor(Math.random() * 4);}
a = [];
for(var i=0;i<4;i++) a.push(random4());
ほら、なんていうかこうしておけば修正が容易っていうか
可読性が上がるっていうか
あーなんか
>>503 と似たような気もするけどね!
505 :
492 :2005/06/21(火) 03:42:56 ID:d5Hr8cKy
>>496-504 Thxです。今回は499さんの方法を採用し、成功しました。
発端は同時に4つの乱数を得ようとしたことでしたが、皆さん助言により
簡単になりました。
ほかの言語やっているとどうも random4 = function (){ ・・・・・・ とかの表現に抵抗を感じるんだけどそんな人ほかにいない?
Function型の扱いには慣れちゃったからなぁ。 むしろほかの言語でできたら便利とか思う。
漏れも499ベスト解答だと思う。4つぐらいならループ処理いらんし、 なにしろ、行コピペでのエディット簡単。しかも見やすい。 if文を一行にしたがるというか、一行にするのがカッコイイと思ってる 様な人が居るけど、後々の修正を考えると、お勧めできないなあ。 あ、業務でいじってる(他言語だけど)人の独り言ですた。
いや、1行にするのがかっこいいんじゃなくて メンテナンスの速度性でしょ? 例えば急に0〜4にしたくなった時に、どれくらい変える必要があるかとか。 行コピペは配列作るのにエクセル使うようなもんだよ。
>>509 いやいや、if文が1行だと中身を増やす修正の時に改行を入れて、
{}つけて。。ってやらないとならないので、ってことです。
if(){
}
失礼、続きです。の形で統一しておかないと、効率悪いのです。
ifの中身が1つで決まっている時はそれでいいと思うよ。 意味的なコーディングっていうことで。
>>510 それはエディタの機能で補完されるべきじゃないかと。
ifの省略形は有効であるってことはかなり言われてる。
4つの処理に対してコピペして並べるのは
理解はしやすいけど一般的に美しいとは言われないね。
バグの元になりやすい部分。
一長一短だけどな。
>>513 システムを組むときにコーディング規約を作るわけですよ。
1人1人が勝手なことをされると直す方が大変なので。
そのことを言っています。
4つは私も微妙な線ですね、forつかうかベタにするか^^
515 :
Now_loading...774KB :2005/06/21(火) 12:12:24 ID:g+bK4RFr
functionのパラメータにムービークリップ名(my_mc)を代入するにはどう書けばよいのでしょうか? これだと動かない… kansuu(my_mc); function kansuu(target_mc:String) { var my_color:Color = new Color(target_mc); … } var my_color:Color = new Color(target_mc);が var my_color:Color = new Color("my_mc");になってしまってるのかな。 「""」を外したい。
>>515 式が今一わからないけど
//my_mc 上のAS
onClipEvent (mouseUp) {
kansuu(this);
}
//1フレーム目
function kansuu(hogehoge) {
var my_color:Color = new Color(hogehoge);
}
とか というかストリングにしたらそりゃ "" 付くよ
517 :
515 :2005/06/21(火) 14:00:02 ID:g+bK4RFr
あっ。 function kansuu(target_mc:MovieClip){ にすればいいみたいですね。 今度はこの関数をsetIntervalから呼び出すことができない・・・ パラメータをなしにして function kansuu(){ … } 呼び出す方は setInterval(kansuu,1000); とすると一定時間ごとに処理してくれるんですが、 パラメータがある場合、 setInterval(kansuu(my_mc),1000); にすると一度しか実行されなくなりました。 どう修正したらよいのでしょう・・・
setInterval(kansuu, 1000, my_mc); すぐ聞かずにヘルプを読んでから。
519 :
515 :2005/06/21(火) 14:23:26 ID:g+bK4RFr
すみません。 でもありがとうございます! 書籍のリファレンス読んでて、そっちには載ってませんでした。 ちゃんとMacromediaのほうを読むべきでした。 無事動作しました。おさわがせしました。
>>519 確かにリファレンス系の本って誤植とか説明漏らしとか多いよな。
ガンバレー
初めて投稿します。どなたかどうかご助力ください。 ・PHPでDBから取得したテキストをブラウザ上で表示できています。 <?php echo $name_sei; ?><?php echo $name_mei; ?> これをフラッシュ上のダイナミックテキストで表示したいのですがどのように記述したらいいでしょうか? PHPの知識は無いに等しいので既にあるこの状態を利用してフラッシュ上での表示を果たしたいのですが…
>>521 _rootにダイナミックテキストを配置して、その変数にstrTextと設定。
そして↓これ。
objText = new XML();
objText.onLoad = function(success) { _root.strText = this.toString() };
objText.load("test.php"); // ←ここをPHPのURLに
ただし、日本語を使っているテキストの場合は
出力がUTF-8じゃないと上手くいかないでしょう。
523 :
521 :2005/06/21(火) 19:34:23 ID:rUO1H2oo
>522 早速の返答ありがとうございます。 組み込んでみようと作業中なのですが $name_sei $name_mei をどのように関連付ければいいのでしょうか? …絶対的にスクリプトスキルが足りてない状態で申し訳ないです。 もうすこし現状の詳細を書きます。 ・xxx.php?e="登録されたのメアド" にアクセスするとDBからそのメアド対応する姓名を持ってきている ・それをphpファイル内html部分の記述 <?php echo $name_sei; ?><?php echo $name_mei; ?> でブラウザ上にテキストで表示されている 今は教えてもらった通り_rootにダイナミックテキストを置いてstrText設定し フレームスクリプトにobjTextの3行を入れたところで詰まってます。 根本的に理解させるのは叶わないと思ったら投げ出しちゃってくださいm(__)m まずは化けた状態でもいいのでとりあえず読み込ませて文字コードは次のステップにしたいです。
524 :
521 :2005/06/21(火) 20:00:35 ID:rUO1H2oo
あ。 phpに文字列だけ出させる処理をさせて 別HTML上のSWFでそのphpを指定して呼び出してくる仕様、 を教えてくださった気が。。 詳細書かないとそうなってしまいますね すいません。 メアド付きのphpでそれぞれ対応する文字列を表示したいので php内でswfも配置したいのです。
>>524 おっと。なるほど。テキストだけ出力するPHPがあるのかと思っていました。
そういうことなら、PHP内でswfを出力するタグがあるかと思うので、
そこにクエリー文字列としてつけて渡すのが一番簡単ですな。
<PARAM NAME=movie VALUE="test.swf">
<EMBED src="test.swf" ・・・・
↑これを↓このように
<PARAM NAME=movie VALUE="test.swf<?php echo urlencode($name_sei);?>&mei=<?php echo urlencode($name_mei);?>">
<EMBED src="test.swf?sei=<?php echo urlencode($name_sei);?>&mei=<?php echo urlencode($name_mei);?>" ・・・・
こうすれば、swfの_root.seiと_root.meiにそれぞれ値が入ります。
文字コードの問題は、やはり残りますが。
とりあえず_root にseiとmeiの変数を割り当てた
ダイナミックテキストを配置しておけば、これで表示されるかと。
>>525 重要なところで一箇所ミスしたので訂正。
↓ココ
<PARAM NAME=movie VALUE="test.swf?<?php echo urlencode($name_sei);?>&mei=<?php echo urlencode($name_mei);?>">
<EMBED src="test.swf?sei=<?php echo urlencode($name_sei);?>&mei=<?php echo urlencode($name_mei);?>" ・・
これでOkayな筈。
申し訳ない。
>>526 でも、まだ間違っていました。。。
すっきり書く改良も加え最終的には↓これでお願いします。
<?php $swfURL = sprintf("test.swf?sei=%s&mei=%s", urlencode($name_sei), urlencode($name_mei)); ?>
<PARAM NAME=movie VALUE="<?php echo $swfURL ?>">
<EMBED src="<?php echo $swfURL ?>" ・・
528 :
521 :2005/06/21(火) 20:41:16 ID:rUO1H2oo
対応ありがとうございます! えぇと、swf内のActionScriptでいろいろ行なうのではなく クエリー文字列というものを使えば swf配置のタグ部分で文字列の代入ができる、ということですね。 文字コードの問題も合わせていろいろ試してみます!
質問です。 たくさん生成された物同士で当たり判定を取るにはどうすればいいですか?
530 :
Now_loading...774KB :2005/06/22(水) 08:23:31 ID:NDNuzfCV
>>529 一つ一つ判定して行くしかないんじゃないか?
531 :
Now_loading...774KB :2005/06/22(水) 16:49:08 ID:lF4GT2gL
識別子のタイプ(型)ってどう定義するのでしょうか? :Numberでもないし、:MovieClipでもないし。 タイプを判別してくれるプログラムとかあったらいいんですけどね。 エラーで「型が一致しません」ってしかでないのは不便。
>>531 今ひとつ言わんとしようとしている内容が良く分からないけど
typeof( ) ではなくて?
というかどういう状況で型が推測できなくなるのかワカンネ。 >:Numberでもないし、:MovieClipでもないし。 どんなアバウトさだよw なんでNumberとMovieClipで迷うような代入式が発生するんだよ。
534 :
531 :2005/06/22(水) 17:22:30 ID:lF4GT2gL
typeof()で判別できました。 こんな便利なのあるのは知りませんでした。 ありがとうございます。
535 :
Now_loading...774KB :2005/06/22(水) 19:00:29 ID:NsVDETzD
変数宣言の var を記述した場合としない場合の詳細な違いを教えてください。
536 :
Now_loading...774KB :2005/06/22(水) 19:10:33 ID:Olvyfg5f
>>535 varアリはfunctionの外から読めないし、
functionが終了すれば消去されるよ。
(´-`).。oO(なんでHelp見ないんだろう?)
(´∀`).。oO(なんでリファレンス買わないんだろう?)
539 :
Now_loading...774KB :2005/06/22(水) 20:35:40 ID:NDNuzfCV
('A`).。oO(あれ? 昨日の夕飯もカレーじゃ、、、)
(´-`).。oO(マルチするようなやつだから見ないんだろうなぁ)
(´д`).。oO(このカレー三日目だけど大丈夫かな・・・)
(・∀・).。oO(カレーと熟女は腐りかけが一番ウマイ)
543 :
Now_loading...774KB :2005/06/22(水) 22:20:31 ID:NDNuzfCV
WinXp Flash Pro 2004を使用しています。 クラスについて質問させてください。 クラスというのはパブリッシュする際にswfファイルに組み込まれる(?)感じなんですか? パブリッシュしたswfを見るのにもぅクラスファイルはいらないんですよね?
いらんちん (´-`).。oO(試してみればいいのに)
onClipEvent(load) { function zoom(){ _xscale +=20; _yscale +=20; } } これをメインタイムラインの1フレーム目に記述する場合、どう書き換えればいいんでしょうか。 あとユーザー定義関数って言うのは定義したオブジェクトに対してのみ有効?
MC.zoom = function (){ _xscale +=20; _yscale +=20; } 後半の質問は質問の意味がわからないので 定義関数の概念がわかってないと思われ。 Flashの関数は、一連の処理を保存する変数みたいなものだと思えばよし。
548 :
Now_loading...774KB :2005/06/23(木) 04:50:44 ID:vJL6yXrI
ソフト:MX2004 MCの変形について質問です。長方形の左下の角を基準にして 斜めに歪ませるにはどうしたらいいでしょいうか? つまり _ /| |_| → |/ な感じです。
ASでやるにはかなり複雑な計算が必要だと思われる。
最初に3角形で考えて
/\ ←このような図形をたてよこに変形させると頂点の角度が変化することと
 ̄ ̄
|\
| \ ←このような図形をたてよこに変形させると辺の長さが変化すること
 ̄ ̄
これらを利用する。
っていうかぶっちゃけトップレベルの技術。
ttp://www.vas-animatum.net/ ここの人が得意。
550 :
Now_loading...774KB :2005/06/23(木) 06:01:28 ID:7dqXr6Pv
>>549 これ、すごいねー。フニャフニャのシャッフルとかすげー。
551 :
Now_loading...774KB :2005/06/23(木) 15:14:17 ID:kyiVFLiM
ちょっとした質問なんですが、 (MX2004 Win) ・複数行のコードに一度にコメントする方法 ・ヘルプの文字が小さくて読めないので大きくする方法 どなたか、ご存知の方がいたら教えてください。
>>551 ・ヘルプの文字が小さくて読めないので大きくする方法
↓
Ctrl+マウスホイールぐりぐり
>>551 /*
コメント
コメント
コメント
ああああああああああ
おおおおおおお
ええええええええええええええええええ
*/
554 :
548 :2005/06/23(木) 16:47:36 ID:bqApNO9H
>>554 そういう目的なら話は別。
精密に動かす必要がないのならASじゃなくてトゥイーンを使うんだな。
その中にページを読み込むなり、フレームごとにページを入れておくかする。
初心者です。
Win2000でflaMXを使っています。
ttp://www12.plala.or.jp/nextframe/flash/meiro.htmlみたいに 正方形のムービークリップが他のムービークリップに衝突したときに壊れるアクションを作ってみたいのですが、
シーン1に置いた壁の部分に
onClipEvent (enterFrame) {
if (this.hitTest(_root.sikaku_mc)==true) {
_root.sikaku_mc.gotoAndPlay(2);
}
}
と書き、正方形のムービークリップの2フレーム目に壊れたときの絵を書いてもうまくいきません。
説明が下手で申し訳ないのですが、どう直せばいいか頂けないでしょうか?
どう「うまくいかない」のかの情報を。
559 :
Now_loading...774KB :2005/06/23(木) 23:05:04 ID:VMsHY8xS
>>551 ヘルプはHTMLだからCTRL+ホイールでかわんじゃね?
複数行のコードに〜ってのは意味がわかんね。
単純に置換でもすれば?
560 :
Now_loading...774KB :2005/06/24(金) 15:30:04 ID:P0w60XgR
>>552 >>553 ありがとうございます。
無事解決しました!
ヘルプの文字、今までメモ帳にコピペしてみてたので・・・
助かりました。
・環境
WindowsXP
FlashMX 2004
アクションスクリプトによってswfの張られているサーバの情報は取得できるのでしょうか?
例えば
http://yahoo.co.jp にtest.swfが張られているとしてtest.swfに張られているドメイン名
を表示させたいのです。
よろしくお願いします
それはどういう目的で? 自分で外部呼出しするならHTMLで渡してあげればいいし。
>>564 考えていた用途は二つ。
用途はまったく逆ですが
1、
自分の張られている、URLが取得できれば特定のサーバに
置かなければ動作しないFLASHを作成することができる。
他人に勝手に呼ばれることをされない。
2、
自分の張られているサーバのURLをテキストにして電光掲示板
のように流す演出ができる。
1、ならばswfの呼び出しに?マークのパスをかけるとか。 トリッキーな方法になるから分かる人には普通に破られるけど。 後はサーバーの設定でswfファイルへの外部からの直リンを弾くって感じかな。 どこからか勝手に呼び出されるのが嫌ならば、Flashの最後に自分のページへリンクするボタンを作っておくと 何人かに1人はそこへアクセスするのでアクセス解析と併用して見つけるってのはよくやる作戦。 2、はメリットあるのかな?実現も難しそうだし実用には向かないと思う。
リファ知りたいんでネ〜の?
568 :
さちこ :2005/06/24(金) 21:25:12 ID:LlvZsXYh
FLASH MX 2004のgetURL()メソッドを利用して アプリケーションにパラメーターを投げる仕組みを 作成したのですが、WindowsでのIEだけが正しい処理 を行ってくれません。 WindowsのNS、firefox、Operaでは動作しました。 Macでは、Sfari、MacIEで動作確認ができました。 ---------------------------------------------- on(rollOver){ ※テキストボックスにメッセージを表示 } on(rollOut){ ※テキストボックスにデフォルト文字を表示 } on(release){ this.getURL("パラメータを送信するるファイルをを指定","_self","GET"); } ---------------------------------------------- 以上のような処理をしています。 ご教授頂けると光栄です
569 :
556 :2005/06/24(金) 22:37:21 ID:gTwCHvFQ
>>557 言葉足らずですいません。
壁にぶつかった後、MCの2フレーム目以降が再生されない、
要するにスクリプトを書いていない状態と変わらないという事です。
functionで飛ばすとか
>>569 その程度の情報じゃ憶測で言うしかないけど
もしかして1フレーム目にthis.stop();ってかいて、2フレーム目には何も書いてないんじゃない?
だからgotoAndPlay(2);で2フレーム目にとばしても、すぐに1フレーム目に流れてそこで「this.stop();」されてるんじゃ?
572 :
Now_loading...774KB :2005/06/25(土) 08:08:55 ID:xxtoKdyx
ソフト:FlashMX2004
ムービーの逆再生法について聞きます。
例として、Startボタンを押すとバナナ(←バナナレイヤー)が左から右に
モーショントゥイーンで動くムービー
http://oekaki.s56.xrea.com/x/uploader/src/oe1460.swf で逆再生用のClearボタン(バナナ移動後に出現)を用意し、下記の
ASを組みましたが逆再生できません。
間違いを指摘して下さい。
<Startボタン Actionレイヤーのフレーム1>
on (release) {
this.play();
}
<Clearボタン Actionレイヤーのフレーム20>
on (release) {
this.onEnterFrame = function() {
this._currentframe -= 1;
if (this._currentframe == 1) {
this.stop();
}
};
}
573 :
572 :2005/06/25(土) 09:13:48 ID:L5W95k1b
間違い分かりました。 this._currentframe -= 1; → _root.prevFrame(); でした。
質問です。 シューティングゲームの弾のように自分の方向に 弾を飛ばすにはどうすればいいですか?
シューティングゲームを作ってるんですが、自機が左上に移動中はミサイル攻撃ができず 攻撃しながらだと左上に進めないんです。 どなたか教えてくれませんでしょうか? ちなみに下が自機のスクリプトです onClipEvent (enterFrame) { if (Key.isDown(Key.RIGHT) and Key.isDown(Key.UP) and (_x<600 and _y>0)) { _x += 10; _y -= 10; } else if (Key.isDown(Key.RIGHT) and Key.isDown(Key.DOWN) and (_x<600 and _y<450)) { _x += 10; _y += 10; } else if (Key.isDown(Key.LEFT) and Key.isDown(Key.UP) and (_x>0 and _y>0)) { _x -= 10; _y -= 10; } else if (Key.isDown(Key.LEFT) and Key.isDown(Key.DOWN) and (_x>0 and _y<450)) { _x -= 10; _y += 10; } else if (Key.isDown(Key.RIGHT) and _x<600) { _x += 10; } else if (Key.isDown(Key.LEFT) and _x>0) { _x -= 10; } else if (Key.isDown(Key.DOWN) and _y<450) { _y += 10; } else if (Key.isDown(Key.UP) and _y>0) { _y -= 10; } if (Key.isDown(Key.SPACE)) { _root.attachMovie("fire", "fire", 100); } }
and よりも、&& の方がいいよ。
>>575 スクリプトちゃんと見てないけど、
キーボードによって同時入力の認識に違いがあるからチェックしてみたら?
とりあえず試すとするなら、Key.SPACEを別のキーに変える
578 :
575 :2005/06/25(土) 11:17:06 ID:TMu3kpLf
>>576 そうなんですか、変更しておきますね。
>>577 とりあえずENTERにしてみたら動きました、ありがとうございました。
攻撃キーを「z」にしたいんですけど、この場合どうしたらよろしいでしょうか?
境界条件にキーのifっているの?無条件に壁に戻せばいいかと。
580 :
Now_loading...774KB :2005/06/25(土) 16:17:41 ID:S0S69llq
andは推奨されない表記。 国際基準の何かで&&にしようってことになってるのでFlashもそれに準じてる。
582 :
Now_loading...774KB :2005/06/25(土) 18:27:17 ID:eztwcF5H
外人のソースってその辺結構アバウトな傾向あるよね。 and add あたりも良く使われるし、 new Arrayは = [] Math.random()*?もrandom(?)を使ってたり。 ソースの見た目が(視覚的に)綺麗になるからなのかな。
andはまだいいけどaddはさすがにダメでしょ。 外国のソースじゃなくてflash4の時代のソースなんじゃないの? その頃はandとadd使われていたから。 ソースの見た目で行ったら "a" add hoge add 0 こんなのより "a" + hoge + 0 こっちのほうがよっぽどわかりやすいし。 if (abc == 0 and hoge_flag and tmp_flag) これなんか分けワカンネ。&&で表記すれば if (abc == 0 && hoge_flag && tmp_flag) よっぽど区切りがしっかりすると思うんだが。
>>583 いつからadd加算演算子とand条件演算子が一緒になったのだ?
あ、ごめん別々のはなしだったねorz...
586 :
580 :2005/06/26(日) 00:21:44 ID:6hjw369e
andと&&は、動作的には差は無いって事ですね。 推奨されてるかそうでないかの違いですね。了解〜
<div align="center"> <center> これらの違いみたいなものだな。
588 :
Now_loading...774KB :2005/06/26(日) 01:07:06 ID:XFCHLdmA
小数点第○位までの値を表示するにはどうすればいいでしょう? 例えば onClipEvent (load){ startTime = getTimer(); } onClipEvent (enterFrame){ nowTime = getTimer(); passTime = nowTime-startTime; keika = passTime/1000; } みたいにした時に0.1秒までの時間を表示したいのです
Math.floor(a * 10) / 10;
っ Math.floor(keika) + "." + (Math.floor(keika * 10) % 10);
質問です flashMX使用 6個のインスタンスがフィールド上にあって それを 円柱に沿うような回転をさせるにはどうしたらいいでしょうか? 奥に行くほど色も薄くして奥行き感を出したいのですが
モーショントゥイーンとガイド
>>593 後で円周の大きさ スピード等変えたいので
actionscriptでやりたいんですけど・・・
595 :
Now_loading...774KB :2005/06/26(日) 10:57:39 ID:Y3BLJLgU
prototypeで記述してきたものをclassでの記述に移行しようと思っているのですが、 thisの参照先をMovieClipにする方法がわからなくて質問にきました。 mcという名前のムービークリップがあるとして、 MovieClip.prototype.showProp(property){ return this[property] } trace( mc.showProp("x") ) //mcの_xが表示される というような動作をclassで作成する事は出来ますでしょうか?
>>594 Math.sin()とMath.cos()で位置を出して
_widthと_heightまたは、_xscaleと_yscaleで距離から大きさ変更。
swapDepthes()で重なり順を変える。
colorオブジェクトで色変更。
それらをonEnterFrameで実行する。
597 :
588 :2005/06/26(日) 17:46:43 ID:aoK7kPi/
>>591 さんもありがとうございました
表示がスムーズなのでこちらを採用させていただきます
598 :
Now_loading...774KB :2005/06/26(日) 18:15:47 ID:Zpuk2eX1
600 :
Now_loading...774KB :2005/06/26(日) 20:48:56 ID:Zpuk2eX1
>>599 そうは言うがな、少佐。
>>598 すごく良いページだな、そこ。
お礼に
>>tcntが1づつ増えるとか
「// 弾の処理」の1行下の「if (++tcnt > tint)」
>>tnoが1づつ増えるとか
その6行下にある「if (++tno > 1000) tno = 0;」
ポイントは「++」演算子ね。
「++a;」は「a = a + 1;」と全く同じ意味になるの。
602 :
Now_loading...774KB :2005/06/26(日) 21:12:19 ID:Zpuk2eX1
>>601 ありがとうございます。インクリメントは理解したんですが、
if文の中にあるので、よく分からないんです。
意味は、”もし、tcntにプラス1してがtintより大きければ、〜〜”ってことですよね??
++tcntはif文の外で記述しないとおかしくなるような気がしてますが。。。
tnoも,
++tno
if(tno > 1000) tno=0;
としなくてもよい理由がつかめないんです。。。
怪しまれないように簡単な質問を書き添えて URLを貼るとは、上手い宣伝方法ですこと。 同じようなことやってる馬鹿がこれまでにも多数。
インクリメントは個人的に a++;と書きたいのだが、まあそれはおいといて。 a = 1; trace(++a); trace(a); これをFlashで実行するとわかるかも。 ++aとa+=1とは、厳密には違うんだよ。
>>604 ん?まじで!知らなかった_| ̄|○
厳密にどう違うんです?
俺は、 a++; と単独行に1つだけ書きたい派だな。別の式と混ぜるのキライ。
607 :
Now_loading...774KB :2005/06/26(日) 23:25:06 ID:qoGeUs3B
trace(a++); はaを表示してから1足す
608 :
Now_loading...774KB :2005/06/26(日) 23:26:09 ID:qoGeUs3B
trace(++a); はaに1足してからしてから表示 ごめん書いてる途中で送信押しちゃった
609 :
604 :2005/06/26(日) 23:34:09 ID:WYSCXU+5
>>607 ん?なら
「a++」 != 「a += 1」
で
「++a」 == 「a += 1」
じゃないの?
>>606 んでも、(設計ミスで)閾値が1変わるなんてことは良くあるから(よくあっちゃいけないんだけど)
++を前置にするか後置にするかだけで換えられるのは便利だよ。
ゴメン間違えた…IDで判断してくだちぃ。
611 :
595 :2005/06/26(日) 23:57:30 ID:Y3BLJLgU
595です。 相変わらずまだやり方がわからないまま調べてる所なのですが、 どなたかわかる方いらっしゃらないでしょうか?
>>611 (`・ω・)オレは分からんが、地道にがんがれ。
//Hoge.as class Hoge extends MovieClip { function Hoge() { } function showProp(property:String) { return this[property]; } } //mcのリンケージ AS 2.0 クラス Hoge //トレース trace(mc.showProp("_x")); ってこと?
614 :
Now_loading...774KB :2005/06/27(月) 08:52:49 ID:0F5dCpZM
>>613 レスありがとうございます。
そういう形だと思ってたのですが、exetndsで継承しても
thisでの参照先がobjectになってしまい(MovieClipになってない)、
MovieClipから値が取得出来ないんです。
615 :
質問です :2005/06/28(火) 01:21:08 ID:K4L/j9Mv
環境はWinXP MXです。 超初心者なのですが仕事で作っています。 今、3D画像がマウス追従してくるくる回るものを作りたいのですが ASに関しては全く分かりません。 シンタックスエラーが消えません…。 パッと見て明らかにおかしいところとかありますか? 意味不明な質問でごめんさい。 どうかお願いします… onClipEvent (load) { StageWidth=550; thePress = false; } onClipEvent(mouseDown){ thePress = true; } onClipEvent(mouseUp) { thePress = false; } onClipEvent (mouseMove) { if(thePress){ frameNum = Math.round(_root._xmouse*3/StageWidth)+1; this.gotoAndStop(frameNum); } }
どんなシンタックスエラーが出るのかを書いてもらわない事には・・・
617 :
615 :2005/06/28(火) 01:37:13 ID:K4L/j9Mv
ごめんなさい!今出てるのはこれです。 シーン = シーン 1, レイヤー = レイヤー 2, フレーム = 1 : 行 14:シンタックスエラー this.gotoAndStop(frameNum); シーン = シーン 1, レイヤー = レイヤー 2, フレーム = 1 : 行 15:シンタックスエラー } シーン = シーン 1, レイヤー = レイヤー 2, フレーム = 1 : 行 16:予期しない '}' があります。 }
あのさ、コンパイルエラー見てもらうような恥ずかしいことするなよ
619 :
615 :2005/06/28(火) 01:59:09 ID:K4L/j9Mv
もう訳が分からなくて…。 何時間かけても進まないし恥ずかしいことかどうかも分かりませんでした。 スレ汚しスイマセンでした。
えっとつまりね、onClipEventはフレームに書く命令じゃないのよ。 AS初めて? onClipEventはMCの上に書かないといけないのよ。
シンタックスさんの言う様に 14行目と、15行目の空白部分を省いて this.gotoAndStop(frameNum); } としる! 見易くするために、空白を入れたければ、 全角スペースじゃなくて、tabを使う様に。 しる!
>>617 onClipEvent (mouseMove) {
if (thePress) {
frameNum = Math.round(_root._xmouse*3/StageWidth)+1;
this.gotoAndStop(frameNum);
}
}
>>620 コンパイルエラー見てから言ってるのか?
623 :
615 :2005/06/28(火) 02:27:50 ID:K4L/j9Mv
>>620 ありがとうございます…
初めてではないのですが…
超簡単でシンプルなやつしかやったことないですorz
MCに中の空のフレームでも間違いですか?
すみませんFLASH初心者です。 iモード用ページを作成しており、Flashで”インタラクティブ再生”をさせる様な コンテンツを作りたいのですが、携帯端末の”上”キー操作を判別するASの書き方がわかりません。 ”下”キーの場合は on (keyPress "<Tab>") で動きますが、 ”上”キーの場合、仕様書などを読むと 『PC向けFlashプレイヤでのコンテンツ再生時のShift + Tabキーに対応しており』 とあるだけで、具体的な記述がありません。 Googleで関連用語などを調べても該当する内容が見つけられません。 やっと見つけたKey.isDownメソッドは、Flash5以降でしか使えないようです。 (i-mode用のFlashLiteはFlash4相当らしいです) 分かる方から見たらくだらない質問かもしれないですが、教えてください。 (これだけの為に1週間以上作業が滞ってます…)
625 :
615 :2005/06/28(火) 03:14:48 ID:K4L/j9Mv
環境はMX2004、AS2.0です。 MovieClipを継承し拡張したサブクラスがOutside.asにまとめてあり その同階層のmain.flaにおいて次のように、attachMovieで 動的にOutsideクラスのインスタンスを作成したいのですが attachMovie時のリンケージIDをどう指定していいのかわかりません。 createEmptyMovieClip("dummy",1); dummy.attachMovie("Outside", "extendMC", 0); とClass名なぞいれてみてもだめで、とんちんかんにも Outside.asのコンストラクタにてObject.registerClass()で明示してもだめでした。 いろいろやっても最終的に回避できなかったため Helpに従って、main.flaに対してシンボルをあらかじめ作成しておき そのリンケージにOutsideクラスをくっつけてやればうまくいったのですが・・・ これは結局、外部MC継承クラスのインスタンスを作成するためにはいちいち リンク用シンボルをFLA内部にあらかじめ持たないといけないことになりますよね? できればシンボルを作らせず、外部クラスと動的にattachMovieしたいの ですがこれは無理な話でしょうか? どうも仕様っぽいので少しあきらめモードですがよろしくおねがいします(´・ω・`)
>>627 無理。
どうしても嫌なら
dummy.prototype = new Outside()
629 :
627 :2005/06/28(火) 06:31:18 ID:eDgFxjv9
>>628 無理ですか・・・
頂いたコードを、ちょっと試してみたのですがやはり
回避行動には副作用的な記述が増えてしまいますね。
外部リンク用シンボルをなんとかとりまとめる方向で設計することに決めました。
ありがとうございました。
>>596 そこまでは何とかできたんですけど
円柱にそう 感じが出せません
どこかにサンプルがあったのですが。。。
どなたかご存知ないでしょうか?
631 :
Now_loading...774KB :2005/06/28(火) 13:39:39 ID:dxE/EJMP
WInXP FLASHMX2004 変数をダンプする。関数はあるのでしょうか? PHPでのvar_dumpやprint_rみたいなもの よろしくお願いします
>>632 object 以外はtraceでOKだったかな
634 :
Now_loading...774KB :2005/06/28(火) 22:07:49 ID:BUEI8FGy
いろんなところを見てみてもわからなかったので質問させていただきます。 Flash内の色を判別できることはできますか? マウスのところの色は#00ffffだ…とか。 お願いします。
>>631 仕様だからサブドメイン内にファイル置いとけ。
>>634 できません。
みんな次期バージョンでできるようになればいいなとワクワクテカテカ待ってます。
>>636 そうなんですか…ありがとうございます。
createTextField()で動的に生み出したテキストフィールドの embedFontsにtrueフラグを立てて埋め込みフォントを利用するように設定したのですが、 テキストフィールドのプロパティパネルで提供されてるような、 英数字のみや指定文字だけの指定はどうやればいいのでしょうか?
639 :
Now_loading...774KB :2005/06/29(水) 03:38:25 ID:XG14bJTI
早く、マウスのポイントの色を判別できるようにならないかなぁ、、、 (・∀・)ワクワク、テカテカ
>>638 ダミーのテキストフィールドをつくり、プロパティパネルで埋め込みたいフォントを指定。
createしたテキストフィールドのテキストフォーマットにそのフォーマットをセットする。
>>638 TextField.restrict = "a-Z 0-9"
>これはユーザーの操作のみを制限します。 >このプロパティはプロパティインスペクタの >[フォントのアウトラインの埋め込み] チェックボックスと同期しません。
643 :
631 :2005/06/29(水) 08:16:28 ID:c4UQMs4x
>>635 では、データを全部読み終わった後にmyXML.loadを無効にするには
どうすればよいでしょうか。
お願いします。
質問です。 ASでMCを決められた角度を斜め移動するにはどうすればいいでしょうか。
645 :
Now_loading...774KB :2005/06/29(水) 12:40:04 ID:XG14bJTI
↑文章へんだよ
>>644 ASでMCを斜めにできる?
ASでMCを移動できる?
「〜という動きはどうゆうASを組めばいいでしょう」 っていう人間は説明下手糞なんだからせめてモーショントゥイーンで動きのサンプル作って貼れよ・・・
649 :
638 :2005/06/29(水) 14:21:45 ID:nVpMWj1q
>>640 やっぱりそれしかないですかね。
ひな型的なシンボルをFLA内に作らずに、AS処理のみだけで
フォント埋め込みーの、アウトライン表示ーの、を完結したかったのですが。
>>641 入力ワードの制限でなく、ASの処理のみだけで
埋め込みの実装まで完結したいとの意味でした。
書き方が悪かったですね・・・スンマセン
WINXP + MX2004 FLASHでチャットソフトのようなものを作っています。 テキストフィールドに文字を入力したときに、行頭に「。」や行末に「\」などが 入力されると禁則処理が自動で行われしまいます。 これを回避する方法はどうしたらよろしいでしょうか? よろしくお願いします。
せんせー質問 returnで複数の値を返したい時は、 配列に入れたりして返さないとダメですか? もうちょっとスマートなやり方がありそうな気がするのですが
653 :
Now_loading...774KB :2005/06/30(木) 16:11:05 ID:ZCS1sfrX
>>652 複数の値を一気に返す意味は知ったことでは無いが簡単なサンプル書いておく
function hoge(){
return ["あ","か","さ","た"]
}
a = hoge()[2]
trace(a);//"さ"を表示
>>653 即答ありがとうございます。
エスパーな勘に感謝
655 :
Now_loading...774KB :2005/06/30(木) 16:52:07 ID:5/LQU1rm
>>653 知らなかった。便利。(・∀・)マリガトウ、センセィ
>>653 俺もこれ知らんかった。こんな使い方できるんか!
>>654 エスパーって呼ばれると嬉しいです
難しいサンプル書いておく
kansu = new Array(function () {
return [function () { return ["あ", "い", "う"];}, function () { return ["か", "き", "く"];}, function () { return ["さ", "し", "す"];}];
}, function () {
return [function () { return ["ア", "イ", "ウ"];}, function () { return ["カ", "キ", "ク"];}, function () { return ["サ", "シ", "ス"];}];
});
hira = kansu[0]()[1]()[2];
kata = kansu[1]()[1]()[2];
trace([hira, kata]);
変数kansuの配列に関数定義をして返される配列に関数定義された配列を返す
"く"を表示するにはkansu[0]()[1]()[2]と書く
こんなことをするなら普通に3次元配列したほうが簡単だ
もう一つ kansu = function () { return function () { return "あああ";}; }; trace(kansu()()); 変数kansuに普通に関数定義して返される関数で文字を返す 文字を表示するにはkansu()()と、2重に関数呼び出し演算子を書かなくてはいけない ∧||∧ ( ⌒ ヽ ∪゚Д゚ノ 技術スレ逝ってきます ∪∪
ほかの言語と違うところやねー。 ()をつけた回数だけ実行なんだけど、逆に()がなければ変数として扱えるんよ。 aaa = function(){ trace("あ"); } bbb = aaa; bbb(); // 「あ」を表示。
実用例はこう onPress = function (){ startDrag(this); } onRelease = function (){ stopDrag(); } onReleaseOutside = onRelease; マウスカーソルが画面外で離されたときもドラッグを解除するために ReleaseとReleaseOutsideを同じ内容に合わせるという処理だよ。 ここら辺は慣れるといろいろ便利かも。
661 :
Now_loading...774KB :2005/06/30(木) 21:43:23 ID:0BninwTg
onReleaseOutside=onRelease=function(){ stopDrag(); } でもいいのかな。
a=b=c;は b=cが先に実行されて次にa=bの部分を実行する つまりcの内容がaとbに全く同じく代入されるね
for...inで取り出される順序って、通常めちゃくちゃだと思いますが 何を基準に順番定められてるんですか?メモリに並べられてる順序? また、これをコントロールして順序立ててアクセスすることは可能ですか?
665 :
Now_loading...774KB :2005/06/30(木) 23:18:43 ID:ygOaCpP5
>>664 基本的に登録を逆順で辿ってるっぽいよ。
arrayをfor...inで回すと最後から0に向っていくし。
順序立てて並べるんだったら配列に一旦入れてsortOnしてから入れなおすとか。
var a = new Array()
for(var name in object) a.push({v:object[name],name:name})//配列にオブジェクトの内容(名前入り)を突っ込む
a.sortOn("name",Array.CASEINSENSITIVE)//オブジェクトの値の名前でソート
object = new Object()//前のプロパティがあると順序が保持されるので初期化
for(var i=0 ; i<a.length ; i++) object[a[i].name] = a[i].v //配列の内容を逆順で入れなおし
for(var name in object) trace(name+" ::: "+object[name]) //トレースで確認
ってとこ?もっとシンプルな方法あるかもしれんけど。
>>665 ということは、登録の流れをコントロールすれば
for...inによるアクセス順序も操れるってことですね。
配列格納にしてforで回すよりも、オブジェクト格納して
for...inアクセスのほうが処理が早いらしいので、
どうにかfor...inで順序を保てないものかと方法を探していたのですが。
これで本格的に実装できそうです。
ありがとうございました!
いや、オブジェクトに対しては保障できない。 というよりfor in の順序制限は「すべきじゃない」「しちゃいけない」処理。
668 :
666 :2005/07/01(金) 02:07:31 ID:6rdc9fAR
ありゃ、そうなんですか。うーん。 しょうがないので順序立てが必要だった列要素は1桁で足りる量なので、 直接、処理を順序立てて書くことにしました。
いやいや、その程度の量でfor inとforの計算速度を気にするようなシビアな処理は無いだろう。 違いがあるとはいえ本当に小さいし、状況によっては逆転する程度。 たまにそういうの気にしすぎる人がいるけど、実際実験しないとわからんし 気にしすぎて変なコード書いて重くする場合もある。 素直に普通の処理を使いなよ。
670 :
666 :2005/07/01(金) 07:21:47 ID:Y8MbJYu+
>>669 実は、この小さい処理を60fpsで毎フレーム実行するMCが沢山あるんです。
だいたい50〜100程度。なので、チリも積もればでやってます。
いずれ処理速度の最適化はしないとと思ってるので、その時いろいろ実験してみます。
列挙したほうが動作が重くなったりしないかなぁ・・・。
質問というより、自身のレベルが知りたいだけなのですが。 テキストノベル風の一文字づつ表示するのを作っているのですが、 表示する文字列を一文字づつ調べていって、 <>の間は、画像変更等の特殊命令としています。 <が見つかったら、>が見つかるまで、whileでループして、 >が出てきたところで、命令として送るというのを作りました。 (後から、indexOf使ったほうが簡単だったかもと思いましたが。 String.slice()を使って文字のある部分を抜き出すようなときに、 forループが関わってくると、まず一回では成功しません。 何度もプレビューしながら、trace()やデバッガを見つつ、 トライ&エラーでうまくいくまで修正をして子一時間かけて その一部分を完成させていますが、 慣れてくると、そんなことせずにすらすら書けるのでしょうか? その程度のことで手間取っているようだと、まだ中級者とは言えないのでしょうか?
>>672 そんな質問してる時点である意味初心者だとおもうよ
自分で中級者になれたと判断できた時に中級者になるんじゃない?
もちろん中級者の基準なんてないけど
674 :
Now_loading...774KB :2005/07/01(金) 20:35:42 ID:9oyYR33U
>>672 慣れというかまず一度ヘルプ読み倒してみたらどうかな。
どういう動作をしてどういう戻り値を返すか、とかそういうの曖昧だと変なミス起こしちゃうし。
例としてあげてるの自体はこのスレ的には簡単な部類かも。
きっと、「そこまで出来れば立派な中級者〜上級者だよ」って言ってもらえると思ったんだろうな
一文字ずつ表示するというのは、需要があるのかな? ウザイと思う人が多くないかな。 映画の字幕とかって、パッと出るし。
>>676 でもゲームの字幕は一文字ずつ表示するのがあるよな
678 :
Now_loading...774KB :2005/07/01(金) 22:30:55 ID:dLtHIHhS
野球ゲームを作っています。 for(n=1; n<=8; ++n){ if(this.hitTest(_root.a_mc + n)){ this.removeMovieClip(); } } これのどこがおかしいか教えれ。 あと、球をピッチャーの上で一秒くらい表示させてから飛ばすのはどうしたらよいでしょうか??
よく読まずにカキコ _root["a_mc"+n]
>>678 >球をピッチャーの上で一秒くらい表示させてから飛ばすのはどうしたらよいでしょうか??
一秒くらい表示させてから飛ばせばよかろう
頭を使えばいいと思う
681 :
672 :2005/07/01(金) 23:24:02 ID:J62ibeE1
返答ありがとうございます 質問が幼稚ですみませんでした。 もっと精進します。
Mac OS X10.4 & MX で IQ63 です。 諸先輩方に質問があります。 ASで空のMCを作って、外から取ってきた座標情報で◯やら□やらを書いた後に、 それらをまとめてモーションツィーンっぽくクルクル&ピョーン(回転&移動) てな感じで動かしたいのですが、_x,_yを繰り返し(for)でずらしても (当然?)最終的な値のところに移動するだけで、想定している中間の動きは 全く描画されたように見えません。。。 また、回転の中心点もこれらの図形全体の真ん中にしたいのですが、 全体の右下で固定されてしまっています。 サンプルを探しましたが、スクリプトで描画した図形をアニメートするものを見つけレズ。 まず、これが可能なのかどうか、もしも可能であるなら、単純に□が横ずれするだけのような サンプルを拝見出来ませんでしょうか。(自分のコードは見せられたもんではなく。。。ハァ) どうぞ宜しく御願いします。
683 :
Now_loading...774KB :2005/07/02(土) 08:15:47 ID:9B6SuWAU
>>682 var f = 50 //移動にかかるフレーム数
var st = {x:40 , y:50 , rotation:10} //移動前の位置
var ed = {x:200 , y:50 , rotation:10} //移動後の位置
var v = {x:(ed.x-st.x)/f , y:(ed.y-st.y)/f , r:(ed.r-st.r)/f} //移動量の計算
with(createEmptyMovieClip("mc",0)){
beginFill(0xff0000,100)
moveTo(-50,-50)
lineTo(-50,50)
lineTo(50,50)
lineTo(50,-50)
lineTo(-50,-50)
}
function onEnterFrame(){
for(var name in st){
st[name] += v[name]
this.mc["_"+name] = st[name]
}
}
こういうこと?
685 :
Now_loading...774KB :2005/07/02(土) 10:44:04 ID:qWUu+W5B
ソフト:FlashMX2004(7.2) あるMC(名前A)の色のパラメーターcolorIを、onClipEvent (enterFrame) で変化させ、 同時に他のMC(名前B)の色も(同期して)同じ色に変化させるASを書いています。 onClipEvent (load) { my_color = new Color(this); //thisはMCのA _root.B.my_colorB = new Color(_root.B); colorI = 255; _root.ok._visible = false; this._alpha=50; _root.B._alpha=50; } onClipEvent (enterFrame) { my_color.setRGB(colorI*256*256+255); _root.B.my_colorB = my_color; if (colorI<129) { colorI = 128; _root.ok._visible = true; //RGBが(128,0,255)でMCのOKが出現 } colorI -- ; } Aの色は変化するのですが、Bの色が変化しません。また、Aのアルファを50に設定しているのですが、 実際は100のままです。色とアルファの変化法を教えて下さい。 また、ある色:RGB(255,0,255)とRGBが(0,0,255)の中間色の出し方(計算法) を教えて下さい。 以上、宜しくお願いします。
>>685 >_root.B.my_colorB = my_color;
ここを
_root.B.my_colorB = my_color.getRGB();
にするとどうかな
あと、動的に作成した色に対してアルファを設定するのは
setTransform()が必要かも。これはヘルプ読んでね
687 :
685 :2005/07/02(土) 12:24:50 ID:qWUu+W5B
>>686 Thxです。まずは、色変化
_root.B.my_colorB = my_color.getRGB();
をやってみましたが、変わりませんでした。
しかし
trace("colorB= "+_root.B.my_colorB);
で見ると確かに数値は変わっています。他のチェック点
を教えて下さい。
あと、中間色の計算方法もよろ。
688 :
Now_loading...774KB :2005/07/02(土) 14:15:38 ID:Ga8Oq0Ty
マウスホイールでMCを拡大縮小させたいのですがどうしたらよいでしょうか
690 :
Now_loading...774KB :2005/07/02(土) 17:39:33 ID:oXYEcJ4W
球をピッチャーの上で一秒くらい表示させてから飛ばすのはどうしたらよいでしょうか?
>>687 ノークレームノーリターンで
function aidanoRGBha(sColor, eColor, totalTime, time) {
if (time == 1) {
return sColor;
break;
}
if (time == totalTime) {
return eColor;
break;
}
var sArr = osieteRGB(sColor);
var eArr = osieteRGB(eColor);
var ansArr = new Array();
var answer = 0;
for (var i = 0; i<3; i++) {
var sA = sArr[i];
var eA = eArr[i];
ansArr[i] = (eA-sA)*(time-1)/(totalTime-1)+sA;
answer += ansArr[i] << 4*(4-i*2);
}
return answer;
}
function osieteRGB(rgb) {
var R = rgb >> 4*4;
var G = (rgb-(R << 4*4)) >> 4*2;
var B = rgb-(R << 4*4)-(G << 4*2);
return ([R, G, B]);
}
//aidanoRGBha(0x000000, 0xffffff, 20, 12)
//の場合、黒から白へ。20分割の12回目の色返す。
2で割ってるだけじゃん、、、拡張してるかと思ったのに。。。
>>689 漏れの検索のしかたが悪かったかもしれないけど、マウスホイールでは出てこなかったです。
もしご存じでしたらお教えください。
>683,684様 今、戻って見ました! 早速、試してみます! 本当にどうもありがとうございます!!!
697 :
Now_loading...774KB :2005/07/02(土) 20:45:55 ID:gDeorHjr
>695 onMouseWheel 使えばいいんでないの?
698 :
Now_loading...774KB :2005/07/02(土) 22:11:40 ID:pzqxereO
INPUTタグのTYPE=FILEのようにファイルのアップロードを考えています。 INPUTタグだとダイアログからファイルを選択することになりますが、 これをドラッグ&ドロップでやろうとしています。 JavaScriptでなんとかならんか?と思ったのですが、 使えそうなondragdropイベントってブラウザによってあったりなかったり。 ActiveXドキュメントでは?とも思ったけど、 現行のMicrosoft系だと.Net Frameworkが入ってないとだめっぽい。 JavaAppletではどうか?とも考えたのですが、 ローカル資源にアクセスできないっぽい。 ということで、FLASHでなんとかならんか?と調べているのですが、 このようなことを実際にやったことある方や、 なにかヒントになるような情報をお持ちの方はいらっしゃいませんか?
699 :
Now_loading...774KB :2005/07/02(土) 22:18:54 ID:IQaShAlk
質問ッす。 どうやってFLASHに音楽のせるんですか? FLASH MX 2004ってのを使ってます。
>>698 フラッシュにドロップは意味が無い
ドロップされたソフトウェアはドロップされたファイルを開く
ondragdropはマックだけ
私は不可能だと考える
ダイアログを開くにはFlashとJavaScriptの連携が必要だと思う
>>699 Ctrl+R
701 :
Now_loading...774KB :2005/07/03(日) 10:07:06 ID:IK3SF8/I
上の質問でも書きましたが、2種類の色:例えばRGB(255,0,255)と RGB(0,0,255)の中間色の出し方(2進法の計算式?)を教えて 下さい。 ググりましたが見つかりませんでした。
>>701 function colormix(r1, g1, b1, r2, g2, b2) {
r = Math.floor((r1+r2)/2)*256*256;
g = Math.floor((g1+g2)/2)*256;
b = Math.floor((b1+b2)/2);
color = r+g+b;
return color.toString(16);
}
trace(colormix(255,0,255,0,0,255));
>>701 うは、また2でわるだけか。。。
ちなみに、中間値ってどういう意味で言ってますか?
中間値と平均値を混同? 普通は平均値のことかと思うよなぁ。
RGB<->HSV相互変換とかあってまんどくさそうだね。 タダでやってくれるステキな人がいたら 漏れもおこぼれに預かりたい(w
706 :
695 :2005/07/03(日) 14:24:37 ID:mCntyae8
すみません。やっぱりやり方わからないです。 onClipEvent (mouseDown) { this.startDrag(); } onClipEvent (mouseUp) { this.stopDrag(); } onClipEvent (keyDown) { if (Key.getCode() == Key.UP) { this._width += 55; this._height += 40; } else if (Key.getCode() == Key.DOWN) { this._width += -55; this._height += -40; } } ここのKeyDownのところをマウスホイールでやりたいのですが onClipEventではmouseWheel使えないと言うことでしょうか?
707 :
Now_loading...774KB :2005/07/03(日) 15:10:38 ID:DOXbj9QM
>>706 ヘルプでonMouseWheelは検索してみた?
onClipEventじゃなく、listenerを使ってホイール操作をキャッチして、
それを割り当てないとダメだよ。
サウンドのループ回数を指定する際 例えば100万回みたいなアホみたいな値を指定したとして プログラムの動作に何か影響与えるようなことってありますか?
>>705 簡単だ
あんただけが「まんどくさそうだね」って思ってるだけ
ただそれだけで自分で作ろうとしないのは人間として最低だと思う
などと釣られる
>>707 ありがとうございました!
これで拡大縮小できましたが、
現在だとMCの中心を中心に拡大されてしまうのでマウスの位置を中心に拡大縮小させたいのです。
onClipEvent (load) {
_root.kurukuru = 0;
_root.MC1 = new Object ();
_width = 550;
_height = 400;
_root.MC1.onMouseWheel = function (delta) {
_root.kurukuru += delta;
}
Mouse.addListener (_root.MC1);
}
onClipEvent (enterFrame) {
_width =_width + (_root.kurukuru/3)*22
_height = _height + (_root.kurukuru/3)*16;
_root.kurukuru = 0;
}
どうしたらマウスを中心に拡大できるのでしょうか。
宜しければご教授ください。
ヒント MCの中心の座標 マウスについてくる。
712 :
701 :2005/07/03(日) 20:19:23 ID:iCOg5t/D
713 :
Now_loading...774KB :2005/07/03(日) 22:35:39 ID:J7pg4Car
何フレームだけmcを表示するとか、何秒間だけmcを表示するとかいった動きは どう対処したらよいか教えてもらえませんか???
715 :
698 :2005/07/04(月) 01:30:11 ID:wp6L2ISu
>>700 FLASHにドロップしてもブラウザが先(?)に処理するということでしょうか?
FLASHでは外部からドロップ出来ないのかぁ。手詰まり (><)
716 :
Now_loading...774KB :2005/07/04(月) 02:41:14 ID:btG6mOns
Flashでスコープを作りたいんですけど、どんなASを書けばいいですか?
private var a; public var b;
718 :
Now_loading...774KB :2005/07/04(月) 13:37:05 ID:1XJ1RwQx
当たり判定について質問です。 rootにAとB(kabe_mc)の二つのMCがあり、AのMCの中には、さらに4つのMCを配置してモーショントゥイーンで移動させています。 その4つのMCとBとの当たり判定をさせたいのですが、どうしてもうまくいきません。 4つのMCに onClipEvent(enterFrame) { if (this.hitTest(_root.kabe_mc)) { Mouse.show(); _root.gotoAndStop(3); } } と記述するとうまくいくのですが onClipEvent(enterFrame) { if (_root.kabe_mc.hitTest(_x, _y, true)) { Mouse.show(); _root.gotoAndStop(3); } } とするとうまくいきません。 どうにかして後者のような点とインスタンスでの当たり判定をとることはできないでしょうか? よろしくお願いします。
719 :
Now_loading...774KB :2005/07/04(月) 13:59:27 ID:1XJ1RwQx
補足です。 4つのMCを小さな移動する点として当たり判定を行いたいのです。
>>718 座標系(x,y)合ってるか確認して見れば?
>>718 _x, _yがローカル座標(Aの)になっているのでグローバルに変換してやる。
コードはテストしてないので間違ってたらHelpのlocalToGlobalを参照。
var p= new Object();
p.x = this._x;
p.y = this._y;
localToGlobal(p);
if (_root.kabe_mc.hitTest(p.x, p.y, true)) {
〜
722 :
718 :2005/07/04(月) 15:19:34 ID:1XJ1RwQx
723 :
Now_loading...774KB :2005/07/04(月) 23:14:13 ID:XDe/j+8r
すいません質問です。 MCをマスクしてドラッグした部分だけマスクが解除されていく、という事がしたいのですが そういう風にマスクを制御することはできるんでしょうか。
うーん、できるんですか・・・。 マスクに関するイベントとかが見つからなかったのでちょっとくじけそうだったのですが。 わかりましたー、もう少しがんばってみます。
犬の糞避けてるだけだろ。
728 :
Now_loading...774KB :2005/07/06(水) 12:05:40 ID:IQq2t5Cq
MX2004でxpです。 3つの変数a,b,cが渡されて、その中の最大と最小を求めたいです。 いずれの変数も0<=a<=255の範囲内の整数です。 シンプルに tMax=a; if(tMax<b)tMax=b; if(tMax<c)tMax=c; tMin=.......も同様。 とか、考えたのですが別のやりかたとかで良い方法があれば ご教授ください。
tMax = Math.max(a, Math.max(b, c)); 最小はMath.minで同じように。 Math.maxの詳細はヘルプでどうぞ。
3つ以上の数の最大出すときはmax()にmax()内包させればよかったのか・・・気付かなかった。俺頭固いな。 tempNum=Math.max(a,b); maxNum=Math.max(tempNum,c); とかやってたよ・・・
個人的にmaxが複数の値を取ってほしいのですが。 もし多用するならそう改造しちゃいますね。
732 :
Now_loading...774KB :2005/07/06(水) 14:04:42 ID:4lT02lzW
フラッシュに音楽を同調させたいんですがどうすればいいですか?><
733 :
728 :2005/07/06(水) 15:30:06 ID:IQq2t5Cq
>>729 なるほど、Mathメソッドを2重にするというわけですね。
勉強になりました。ありがとうございます。
>>731 ごめんなさい、複数の値というのが分かりません。
a=b=cで最大値という意味でしょうか?
今回のは、最大値と最小値が知りたく、それがaでもbでも
かまわないということで。
734 :
Now_loading...774KB :2005/07/06(水) 15:54:14 ID:VrjUsnlM
737 :
728 :2005/07/06(水) 18:09:17 ID:IQq2t5Cq
複数指定かあ、とヒントもらったので作ってみました。 ヘルプのサンプルをちょっと変えただけで、 やってることは変わりませんがOrz.... function listMax():Number{ var tMax:Number=0; for (var i:Number=0;i<arguments.length;i++){ if (!isNaN(Number(arguments[i]))){ if(tMax<arguments[i]){ tMax=arguments[i]; } } } return tMax; } trace(listMax(5,"ギコ",8,30,mona,30.5,9,5));
738 :
732 :2005/07/06(水) 18:11:17 ID:4lT02lzW
735すいません動揺してます えーといいたいことはFLASH再生中にスクロールバーを動かすと音楽も進むSWFを目にしますが 自分が作るとうまくいきません。要はシーンとBGMのタイムを合わせたいっす やっぱり日本語へんかも
739 :
Now_loading...774KB :2005/07/06(水) 18:40:29 ID:+0dUPgzh
>>738 それなら、サウンドをイベントじゃなく
ストリーミングにすればオッケーだと思うぜ。
今度はちゃんとわかりやすかったからどんまい。
>>738 MXや2004とかなら
下のプロパティの同期ってとこをストリーミングにしてみるといいとおもうお
>>737 それこそmaxを使えば
function listMax():Number{
var tMax:Number = -Infinity;
for (var i:Number=0; i<arguments.length; i++){
if (!isNaN(Number(arguments[i]))){
tMax = Math.max(tMax, arguments[i]);
}
}
return tMax;
}
ちょっとだけスキーリ。
個人的にこういう処理は再帰呼び出ししたいとこだけど。
あとtMaxの初期値は-Infinityにしておかないと、マイナスを比較できないかも。
listMax("a", "b", "c") の場合に戻り値がNumber型ってなんか違和感
Cの人?
if(a&&b) と if(a)if(b) ではどっちが処理軽いと思います?
if(a&&b) じゃね?? つーか自分ではかってみろよ。
>>744 ふつうに後者
前者は余計なbの判定まで毎回(勝手に妄想)する必要が出てくる
でもaに毎回Trueが入ってればどちらでも関係ない。
同じじゃないの? &&ってaがfalseだったらそこで計算やめるから。
いや、っていうかそんなとこで処理の軽さを気にするようじゃいいAS書けんぞ。 可読性を優先しなよ。 if (a && b)にしとくべき。 &&使わずに全部ifで繋げたコードなんて見たくないよ。
>>747 気になったから実験してしまったよ。その通りだな。
a=1;
b=2;
if( a!=1 && ++b==3 ) trace("if_true");
trace(b);
出力
2
a=1;
b=2;
if( a==1 && ++b==3 ) trace("if_true");
trace(b);
出力
if_true
3
750 :
737 :2005/07/07(木) 09:43:19 ID:oIgR3UMG
>>741 レスありがとうございます。
確かに全部の引数がマイナスのときはダメダメですね
実はRGB->HSV変換の部分のなので、条件が0<=a<=255と限定で、
かつ、同じクラス内で使うつもりでして、汎用性とかは全く考えてませんでした。
同じ理由で、Math.max関数を呼ぶオーバーヘッドが嫌だったりして
(エラーチェックとかの部分が冗長な気がして)使ってませんでした。
不定な数の引数を取る時点で色々な場合を考えてあげないといけないのですね。
勉強になりました。ありがとうございました。
751 :
Now_loading...774KB :2005/07/07(木) 10:28:06 ID:g3eQTEFj
if(論理式){ var = m; }else{ var = n; } と、 var = 論理式 ? var = m: var = n; だと速さって変わるかな? 後者が劇的に速いなら使いたいんだが、三項演算子なんて普段使わないからなぁ。
自分で試せ
>>751 下のほうのテートメントサポートされてましたっけ?AS
755 :
751 :2005/07/07(木) 12:58:45 ID:g3eQTEFj
間違えた。 var = 論理式? m: n; だ。 携帯で式書くもんじゃないな。 外で急に思い付いて、ここに書いてみたんだが、帰宅したら試してみよう。 見る人によったら可読性はウンコだけど、使いようでは便利よね。軽いならなおさら。
それよりもさっきから「var = 」ってのがすごく気になるお年頃。
まあ言いたいことはわかる。 でも軽さよりも可読性のほうがずっと重要だと思うぞ。 ? a: bはまだいいけど。
要するにCとかの解説によくあるフーゥバァーみたいなヤツだよ。 ASだとvarが予約語なの忘れてたんすよ。 お察しくださいな。
>>751 で、どっちが早いかの実験結果の報告はまだ?
760 :
744 :2005/07/07(木) 16:42:48 ID:uyc/5ZWK
つーか技術スレでやろうよ
761 :
751 :2005/07/07(木) 17:48:51 ID:xroWIz1a
自己解決しました。 試行回数 1000000回ずつ。 空のfor文を回す。 4125 msec. if(0){a = b;}else{a = c}の場合。 5985 msec. if(1){a = b;}else{a = c}の場合。 5969 msec. a = 0 ? b: c;の場合。 6344 msec. a = 1 ? b: c;の場合。 6328 msec. 三項演算子の方が6%くらい遅いんだ…。 もう使う必要ないかも。
なんだ、あれだ。 trueとfalseを0、1で表現されると なんだか違和感がある。 それはいいとして ? のほうが遅いのは意外だな。
763 :
Now_loading...774KB :2005/07/07(木) 18:14:58 ID:/jSOsia6
ソフト:FlashMX2004 MCのa1をstartDrag()で移動させ、MCのa2とhitTest()でヒットしたらa2と、 隣接させ(くっ付けて)、同様にMCのb1はb2と隣接させるASを書いています。 つまり化学反応みたいに、a1+ a2 →a1a2 , b1+ b2 → b1b2。 このとき全てのMCは、移動中も含めブルブルと振動しています。 あるMC(例えばa1)をドラッグ→移動→隣接させることは可能なのですが、 一方が成功すると、他方(b1)のドラッグ→移動が出来ません。 a1+ a2 →a1a2 の動作は1レイヤー毎に必要かと思い、a と bでレイヤー を分けましたが効果がありません。 原因は何でしょうか?
全部話されるとわけわかんないんだよなぁ。 えっと、2個以上のMCを同時にドラッグできないってことかな? それならflashの仕様だけど。
765 :
744 :2005/07/07(木) 20:00:46 ID:uyc/5ZWK
え? 同時にドラッグすればいいでしょ
ヘルプより startDrag() を実行した後は、stopDrag() によって明示的に停止するか、他のムービークリップに対して startDrag() アクションが呼び出されるまで、ムービークリップはドラッグ可能なままになります。 ほかのMCをドラッグしようとすると前のやつが止まる。
startDrag関数使わないで自分でやればいい これをムービークリップに貼り付けるとドラッグできます onClipEvent (mouseDown) { if (hitTest(_parent._xmouse, _parent._ymouse, true)) { mouseon = true; tx = _parent._xmouse-_x; ty = _parent._ymouse-_y; } } onClipEvent (mouseUp) { mouseon = false; } onClipEvent (enterFrame) { if (mouseon) { _x = _parent._xmouse-tx; _y = _parent._ymouse-ty; } }
うん、だからバグの原因は2つstartDragしたんじゃないの?っていう話。
769 :
763 :2005/07/07(木) 20:49:02 ID:XSo93nPK
>>764-767 Thxです。同時ドラッグではなく、a1+ a2 →a1a2 ならばa1はstopDragで
ドラッグ解除し、b1を先に移動させればb1が先にstopDragするようにしています。
しかし結果的にソフトの方で「同時ドラッグ」と解釈されている可能性が
あります。←これを確かめる方法はありますか?
hitTestでstopDragになるようにしていますので、767さんの方法は改造
して利用したいと思います。
っていうか、普通にどこか凡ミスしてると思うんだけど。 そういう質問の仕方をする人は大抵そうだよ。 ドラッグ命令の直前にtrace()入れてそこへ処理が来てるか試した?
>>761 ウチは三項の方が誤差分くらい早かった
同時に、処理速度が遅いのが解った
ちなみに98SEでMX
772 :
751 :2005/07/07(木) 23:39:29 ID:xroWIz1a
>>771 100万回1セットを10回以上試して、
>>761 のはそのうちの1つなんだが、
うち2,3回はif文と三項演算子がほとんど変わらない回があったのよ。
ただ、三項がif文を抜くことは1度もなかったな。
ほとんどが6%くらいの差なので、これを貼ったんだが、
当たり前だけどプロンプトとかサーバーでCとか走らすのと違って結構誤差が激しいのね。
flash初心者なので勉強になりました。
あと、環境はXPでMX。
>>770 trace()をやってみましたが、ちゃんときていました。
774 :
Now_loading...774KB :2005/07/09(土) 09:08:18 ID:iA4+zmkb
20フレーム目に下記スクリプトを書いて50フレーム目にstop();を書いても フラッシュが止まりません。 どうすればよいでしょうか。 this.onEnterFrame=function () { 中略 }
775 :
axa :2005/07/09(土) 09:24:19 ID:bxRcBKqo
ho-///
オブジェクトを null するのが JAVA っぽいんかな。 分からんならフラグでも立てれば。
>>774 onEnterFrameは、同一キーフレーム内に再生ヘッダがあるときのみ処理を回すイベント。
新しくキーフレームが打たれればその前のフレームに乗ってたスクリプトは関係なくなる。
20フレーム目にスクリプト書いてるレイヤーと50フレームに書いてる
レイヤー分かれてるんじゃないの?
778 :
774 :2005/07/09(土) 10:22:42 ID:iA4+zmkb
>>777 返事ありがとうございます。
20フレームと50フレームに書いてあるのは同一レイヤーです。
ためしにこんなのを書いてみましたが駄目でした。
解決に繋がる助言お願いいたします。
g=0;
this.onEnterFrame=function () {
g+=1;
//trace(g);
if (g>=50){
stop();
}
my_mc._x=my_mc._x-1;
}
>>778 おかしいなぁ。
まぁその方法だとしてカウントしなくても
this._currentframeに現在の再生ヘッダのある
フレーム数が入ってるのでそれを判定に使える。
詳しくはヘルプを。
それとstop()は再生ヘッダを止める命令であって
onEnterFrameのイベントを止めるものじゃないので注意。
this.stop();
781 :
774 :2005/07/09(土) 11:09:59 ID:iA4+zmkb
>>779-780 ありがとうございます。
this.onEnterFrame=function () { から抜け出すには、どうすればよいでしょうか。
>>781 onEnterFrameの中の処理の先頭に
if(this._currentframe == 50){
this.stop();
return;
}
をいれればとりあえず処理はされない。
aa=0; this.onEnterFrame=function(){ aa++; trace(aa); if(aa>10){ //delete this.onEnterFrame; //this.onEnterFrame=undefined; this.onEnterFrame=null; } } 好きなのを。
784 :
774 :2005/07/09(土) 12:15:28 ID:iA4+zmkb
>>782-783 解決できました、ありがとうございました。
this.onEnterFrame=null; で完成しました。
785 :
763&769 :2005/07/09(土) 12:29:24 ID:c2BgzqDp
hitTest判定でドラッグを解除する質問しましたが、状況は改善 されません。 767さんのASはその後の作業を考えて保留しました。 最初の質問では、a1+ a2 →a1a2 , b1+ b2 → b1b2 と、2組について聞き ましたが、1組に絞って検証したところ、hitTestでドラッグが解除出来ていない ことが判明しました。 (続く)
786 :
763&769 :2005/07/09(土) 12:32:04 ID:c2BgzqDp
(上の続き。a1+ a2 →a1a2 のAS) on (press) { //ここからMC:a1 trace("Drag1"); this.startDrag(); //ドラッグ開始 _root.flag1 = true; } onClipEvent (load) { //ここからMC:a2 xa2 = this._x; //a2の初期座標 ya2 = this._y; } onClipEvent (enterFrame) { power = _root.Temp; //振動幅。これはボリューム型MCで与えられる。 function shake() { return (Math.floor(Math.random()*power)-power/2); } this._x = xa2+this.shake(); //a2を振動させる this._y = ya2+this.shake(); if (_root.flag1 == true) { _root.a1._x = _root.a1._x+this.shake(); //a1をドラッグすると振動開始 _root.a1._y = _root.a1._y+this.shake(); } if (this.hitTest(_root.a1) == true) { _root.a1._x = this._x; _root.a1._y = this._y-10; //a1はa2の上に固定 _root.a1.stopDrag(); if (root.a1.stopDrag() == true) { //ドラッグ解除の判定 ←※ trace("Stop1"); } } } ※の所でドラッグが解除できない(Stop1が出ない)原因は何でしょうか?
_
788 :
Now_loading...774KB :2005/07/09(土) 13:02:04 ID:uTTFvCiG
>>786 なんつーかもう
読むのも嫌になるソースだな。
このスレで自分だけ質問に答えられてない理由を考えてみな。
質問は丸投げだし、問題の切り分けはしないし。
まず振動とか余計な機能を切り取って検証しろよ。
>>789 そうですね。見苦しいです。
その後の経過を書きますと、hitTestでドラッグを解除するのではなく、
a1,a2の座標関係に細工をして、on (press) の後にon (release) を置き、
ここでドラッグ解除することにより上手くいきました。
ご迷惑をおかけしました。
答え
>>787 にレスされてんじゃん。
的確でステキな解答じゃん。
793 :
Now_loading...774KB :2005/07/10(日) 12:43:28 ID:+EkzO3zR
eval関数と、[ ](カギ括弧?)の使い分けの質問です。 本を読みますと 「eval関数は引数として渡した文字列を参照として解釈し、その文字列で 表されるインスタンスやプロパティ,メソッドが存在すれば、その参照を 返します。」とありますが、例えば、kazuを1〜10まで変化させるとして A) _root["Neme"+kazu]._x; と B) _root.eval("Neme"+kazu)._x; にはアルゴリズムの処理にどのような違いが現れるのでしょうか? 同時にこれらの使い分けはどのようになりますでしょうか? (あと、ASでの[ ]の正式名称を教えて下さい)
基本的に全部[ ]を使って間違いないと思う。 2つの違いは変数へのアクセス。 _root.hogeMC["_x"] = 10; これは可能だけど _root.hogeMC.eval("_x") = 10; これはPlayer5以上でエラーを起こす。 基本的にPlayer5以上ではevalではなく[]を使うことを推奨されているし すべての機能は[]でまかなえるのでevalは必要ない。 携帯電話用のFlashを作るときは逆に[]が使えないのでevalを使う。 []の名前は配列アクセス。
795 :
Now_loading...774KB :2005/07/10(日) 18:03:42 ID:NeCQHtbE
質問です 時間の経過をあらわしたいのですが getTimer()を使うとファイルを開いたときからの時間の経過が表示されてしまいます そうではなくて指定の指定のフレームからの時間の経過を知りたいのですが どうしたらよいですか?
796 :
Now_loading...774KB :2005/07/10(日) 18:16:49 ID:9QhzoAha
>>795 指定のフレームで一旦時間を取得してから経過時間を知りたいフレームで差分を算出。
開始フレームにて
startTime = getTimer()
経過チェックフレームにて
trace(getTimer() - startTime)
797 :
793 :2005/07/10(日) 20:59:36 ID:Ax08LhDr
>>794 すべての機能は[]でまかなえるのでevalは必要ない。
なるほど、Thxです。
MX,Winxpの環境で シューティングゲームを作っています。 自機の移動・玉の発射までは出来たのですが、敵機の攻撃のスクリプトを組むところで行き詰ってしまいました。 敵機が自機の方向に弾を発射してくるスクリプトを書こうと思ってテンプレのサイトのサンプルファイルを加工 ようとしたのですが、どうしても出来ませんでした。
799 :
Now_loading...774KB :2005/07/11(月) 00:40:50 ID:6Gy8hv0y
>>798 そっかぁ、どうしても出来なかったんだ。でも少し休んで
気持ちを切り替え、少しずつがんばれよ。あるときひらめくよ。
SharedObject
次スレのテンプラにshareObject入れようぜ
804 :
Now_loading...774KB :2005/07/11(月) 13:26:07 ID:MovARINh
塗りは空白で、線のみのデカイ円を描いてムービークリップにして、円の中にムービークリップを入れ、 円の中の入れたムービークリップと円の外周の線との当たり判定が取れないんですが、 どうしたらよいでしょうか??
805 :
804 :2005/07/11(月) 13:31:43 ID:MovARINh
追加: 円はいびつな楕円です
いびつな楕円ってなんだよ
こんばんは クリップボードの内容を取得するにはどうしたらよいでしょう
無理
そうですか ご回答いただきましてありがとうございます
812 :
811 :2005/07/11(月) 22:46:47 ID:HISjky/6
よく考えるとアクセスした瞬間にクリップボードのデータをどっかに送られる可能性があるわけだが これって脆弱性?
javascriptのclipboardData.getDataがWindowsのIE限定な事を考えると、 実際に使えるかというと無理だと思う。 それとActionScriptにSystem.setClipboardがあって getClipboardが無いのはセキュリティ上の仕様でしょ
スレ違いですがMSのキチガイ仕様には呆れかえるばかりですね しかもActiveXで処理してるのかと思ったらJScript実装だとは。
フラッシュ上でmp3やaviを呼び出すのと同じように exeや別の形式も呼び出すことは可能でしょうか・・? FlashMX2004ProのWindowsXP環境です。
無理
>>818 ローカルコンテンツで同階層におくならね。
マルウエアでも作るのか?
822 :
Now_loading...774KB :2005/07/13(水) 11:03:00 ID:F6NfZQSl
Microphone.getで入力した音って、全部モノラルになっちゃうんですか? 再生すると見事にモノラルになってしまうんですが・・・
マイクは普通モノラルだろうに。 ステレオのLINEとは違う。
824 :
Now_loading...774KB :2005/07/13(水) 14:05:07 ID:ROEilV2C
ワロタ
ステレオのマイクとかカコイイ!
まあ、ステレオのマイクは存在するが・・・・w
家庭用ムービーカメラにも普通に付いているのに PC用のマイクはモノラルだけ?
PCにステレオマイクなんて付けても意味無いでしょ、基本的に。
829 :
Now_loading...774KB :2005/07/13(水) 17:21:12 ID:v1DC/Rau
ムービークリップのフレーム数を取得するにはどうすればいいんでしょうか
MovieClip._totalframes
831 :
Now_loading...774KB :2005/07/13(水) 17:32:02 ID:AzE6JTul
ソフト=FlashMX2004 あっちこっちに動いた複数のMCを、あるボタン(例:クリアボタン)を押すと、 全部のMCが一斉に元の場所に戻る(初期状態になる)常套手段or定石にはどの ようなものがありますでしょうか? 考えられるのは 1)1フレーム目を初期状態として、gotoAndStopで戻る 2)onClipEvent(load)で各MCの初期位置を記録し、クリアボタンで戻す。 がありますが、いかがでしょうか?
>>831 MovieClipのorototypeに初期位置を記憶して、ある一定の命令で元の位置に戻るようにしておく。
まあ考えとしては2)と同じようなものですね。
なんかおかしいことになってしまった。 prototypeに初期位置を記憶して、元の位置に戻るようなfunctionを書いておく、でした。
>>831 for(idx in)とか
1は、enterFrameかunload使ってると、
誤動作起こす可能性あるから、2かな。
>>830 ありがとうございます
もっと難しいのかとおもってました
よく調べてから質問するべきでした
失礼します
836 :
831 :2005/07/13(水) 21:54:28 ID:AzE6JTul
>>832-834 ・うーん。prototypeを使うと結局、あらかじめ記憶した初期値を使う
ことになり、(832のように)特にメリットが無いような気がします。
・for(idx in)の文例を教えて下さい。
837 :
Now_loading...774KB :2005/07/13(水) 22:02:25 ID:eQ7aTJq/
watch使うとか。
>>836 (´-`).。oO(なんでHelpみないんだ?)
>>836 定石を教えてくれというから定石を教えたら
「特にメリットがない」って喧嘩売ってるの?
もの凄い勢いで答えるだけじゃなく、無視することも重要
842 :
Now_loading...774KB :2005/07/14(木) 00:25:01 ID:xZ9ssGMQ
ストップウオッチのASで質問。(FlashMX2004使用) time = new Date(); でtimeオブジェクトを作成し、スタートボタン(startB)で開始時間を start_t=_root.time.getTime(); 取得し、停止ボタン(endB)に下のASを書き、経過時間(spend_t) end_t = _root.time.getTime(); _root.spend_t = end_t-_root.start_t; を求めるとゼロ(0)になります。実際、traceで start_t と end_t を 見ると、同じ値になります。 どのように改善すればいいでしょうか?
843 :
842 :2005/07/14(木) 00:28:38 ID:xZ9ssGMQ
(補足) time = new Date(); はフレームのASで、スタートボタンと 停止ボタンのASは、on(press)内に書いてます。
>>837-841 複数のMCを元に戻す件
お答え頂いた方々へ。
836であのような表現になったのは、FlashMXの逆引き大全での実際の
prototypeの使い方を、今の自分のレベルで見て(解釈した)ためです。
言い訳と取られるかも知れませんが、経緯の説明としてこのように
書いています。
しかし、初心者のレベルで皆さんの意見に文句を付けたのは紛れもない
事実です。この点に関し、自分の浅はかさを認め、お詫びします。
大変申し訳ございませんでした。
>>842 getTime()はDateオブジェクトが生成された時間を取得するから
同じになって当然。
都度オブジェクトを生成して下さい。
getTimer()使ったほうがスマートでねーのけ? まぁ設計によりけりだけど。
842です。アドバイスThxです。 今回は設計の都合上、getTime()を使いました。なのでgetTimer()は 別の機会に。
848 :
Now_loading...774KB :2005/07/14(木) 18:05:33 ID:BZteuFUk
ボタン型MCの消し方(FlashMX2004使用) 最初、ok._visible=false; で消えているMC(ok)が、ある処理により 現れたとき、これを押すことにより、これ自身を消すにはどうすれば いいでしょうか? on (press) { this._visible = false; } とすると、ステージ全体が消えてしまいます。 対策を教えて下さい。
ボタンに名前をつける。 this.ボタン名._visible = false;
いやいや・・・。
>>848 ボタンをムービークリップにくるんで処理して。
つか、最初よく消えたな。
ちなみにボタンオブジェクトでtrace(this)すれば
何故そうなるかすぐわかるかと。
851 :
848 :2005/07/14(木) 18:30:32 ID:BZteuFUk
話を整理したいのですが、ここでのボタンとは「ボタン型MC」で、 ボタンシンボルではないです(平たく言えばただのMC)。 849,850さんのアドバイス参考にさせて頂きます。849さんの 「ボタンに名前をつける」とはインスタンス名を付けるという ことでしょうか?
852 :
849 :2005/07/14(木) 18:40:34 ID:ageBd/Ql
あ、MCにしてて最初に消せたのか。 そうするとインスタンス名関係ない。
いろんな所にtrace(this)かいて実験してみれば、 色々原因もわかるしパスの勉強になるかもわからん
854 :
848 :2005/07/14(木) 20:53:53 ID:jE/RA7b5
>>853 やっぱ、trace(this)ですか。やって見ます。
つーか on(press) 使ってるから訳分からない事になってる。 onPress = function(){ this._visible = false; } これでやってみ
なんつーか・・・随分不安にさせてくれるスクリプトだなw
857 :
Now_loading...774KB :2005/07/14(木) 22:11:09 ID:Df9mt6lQ
もしもし。 for(n=1; n<=8; ++n){ if(this.hitTest(_root["hosyu_mc" + n])){ this.removeMovieClip(); } } ではOKなのに、 hitTestが、 _root["hosyu_mc" + n].hitTest(this._x, this._y, true) だと、動かないんですが、何故でしょうか??? 皆目検討がつきませぬ。
860 :
848 :2005/07/14(木) 23:47:14 ID:shV1WcFZ
>>855 onPress = function() で上手くイキました。
Thxでごわす。
onPress = function() とかの文法が分からないのだがどう使うの?
>>861 見たまんまだけど。
イベントハンドラーの設定をしてるだけ。
>>861 心の底から疑問なんだけど、自分で調べようとか思わない?
いや、そこを知ってて当然みたいな反応するのはどうよ? 普通の人間はonPress = function()なんて使わなくね? 俺は使うけど。
そこらへんのコーディングノウハウは ヘルプでも使われはしてるけど、 説明はあんまりしてないからなぁ。 とっかかりの人はよくわからなくても仕方ないかも。
866 :
Now_loading...774KB :2005/07/15(金) 19:23:51 ID:Mf7rk0c8
ヘルプで検索してみりゃ誰でもわかるだけに・・
いやわからんて。 ヘルプには匿名関数とかどうのとか言ってるもんだから。 俺はリアルでAS教えることがあるからわかるんだが 結構そこら辺は引っかかるぞ。
868 :
Now_loading...774KB :2005/07/15(金) 20:51:02 ID:Mf7rk0c8
>>867 はぁ?わからんて…無能の馬鹿が教えてりゃ世話ないね。
Button.onPress
Player
Flash Player 6。
シンタックス
my_btn.onPress = function() {
// ここにステートメントを記述
}
パラメータ
なし。
戻り値
なし。
説明
イベントハンドラ; ボタンを押すと、呼び出されます。このイベントハンドラが呼び出されたときに実行される関数を定義する必要があります。
例
次の例では、onPress ハンドラに対して、trace() アクションを [出力] パネルに送る関数を定義します。
my_btn.onPress = function () {
trace ("onPress called");
};
なんつか、言ってることが伝わらない相手は疲れるからもういいよ。
ヘルプなんかコピペされて あ!わかったーなるほどねーなんてなるかっての。 ヘルプを見ても初心者にはわかりにくい内容を さも知ってて当然のように扱うってのはどうか?って話をしてるんだろ?
子供が主題を踏み外すことはよくあることです。 生暖かい目で見守りましょう。
873 :
trace() :2005/07/15(金) 23:05:10 ID:/dMHDNDU
MX2004+WinXPSP2使ってます。 .asファイルをエディタ(Meadow)で編集+保存後、 MX2004でパブリッシュしても、asファイルの変更が 反映されない... MX2004を一度終了、もう一回起動してパブリッシュすると 反映される。どーいうこと?
ヘルプ読んで解んないってちょっとオカシイよ 日本語の勉強から始めれば?
だからヘルプはもうわかってるんだってば。
876 :
Now_loading...774KB :2005/07/15(金) 23:30:21 ID:reobfwnq
>>875 例貼り付けて動作検証すりゃすぐわかるだろ。
877 :
Now_loading...774KB :2005/07/15(金) 23:32:46 ID:reobfwnq
>>873 それは外部ASにアクション書いたswfが反映されないって事だよね。
外部ASはパブリッシュ時に内包されるから外部変えてもパブリッシュしないと意味ないよ。
ためしにそのasファイル消すなり移動するなりしてからswf起動してみー
878 :
trace() :2005/07/15(金) 23:46:45 ID:/dMHDNDU
>>877 いや、外置きasを変えてから、パブリッシュし直ししてます。
それでも、変更が反映されなくて、悲しい。
>>878 asファイルがちゃんと保存されていないのでしょう。
flaファイルと同じフォルダに同名のasがあって、editorで他の、ファオルダ
をeditしてるとかありませんか?
簡単なASを作ってみて実験してみれば?
>>876 だーかーらー!俺はヘルプはわかってるんだってば。
初心者にいきなり検証してみろなんて言うやつは
教えるのに向いてないっての。
検証って言うのは、出来る限り単純にしたサンプルを作って実験するってことで、 初心者にはオススメのはずだが。
873じゃないけど、asの内容を反映しないケースってあるよ。 1)as編集→2)swf作成→3)asの編集ミス発覚→ 4)バックアップフォルダにあるasを、当該フォルダにコピー(失敗したasに上書き)→ 5)swf作成→6)3)のミスした状態のswfのまま でも、以下のように1ステップ追加すると正常なswfができる。 4)→5)上書きしたasをエディタに読み込んで、何もせずに保存→ 6)swf作成→7)swfが正常に戻る swf作成時に2004はタイプスタンプも保持してるんかね。 asのタイムスタンプが古いと内容を反映しないっぽい。
883 :
Now_loading...774KB :2005/07/16(土) 01:46:26 ID:cgiAf1SH
>>881 もうスルーで良いんじゃないかな。呆れる。
>>890 お前がずっと何を切れてるのかわからんが
質問者がヘルプを読んだとも思えなかったが?
しかもみんな、そういいながらきちんと説明してるだろ?
説明しながら
ヘルプをきちんと読んで簡易なサンプルを作って試せと
アドバイスするのがそんなに不満なことか?
onPressなんて書いた俺が悪かったよwww
886 :
Now_loading...774KB :2005/07/16(土) 13:51:54 ID:Mi9aSkGp
質問です 変数で例えば、1,2,3,4,5とあったとすると、 このうちのどれかをランダムで実行するってのはどんな風に記述すればいいですか? Flash MX 2004です。
var i_array = new Array( 1,2,3,4,5 ); trace( i_array[ Math.floor( Math.random() * i_array.length) ] );
888 :
Now_loading...774KB :2005/07/16(土) 14:04:55 ID:s+nC84Yn
>>886 変数を実行?
ちょっと意味がわかりかねるけど、
5種類の変数のうちひとつの値をランダムで返すって事かな?
それならごく単純に配列で出来るけど…そういう事?
var hensu = [1,2,3,4,5] //配列に5種類値を入れる
trace(hensu[Math.floor(Math.random()*hensu.length)]) //配列の幅分のランダムで配列位置決定
こんな風に。
890 :
Now_loading...774KB :2005/07/16(土) 20:04:57 ID:hk4BE2WR
loadVariablesで読み込んだテキストってそのまま計算したり比較したりできますか? 変数がtxtならtxt = txt + 1とか txt > txt2とか 確か文字列から数値に変換しなくちゃいけなかったと思うんですけど…
質問です ASで画像の一部分だけ透過処理とかできますか?
>>892 動的マスクでMCシェイプを使うとかである程度はできるけど、
ASでpngやgifみたいにと言うのは無理だねぇ。
すいません、ここで言われているASとはActionScriptのことですよね。 MCというのは何の略でしょうか?
>>895 何故自分で調べないのか
ムービークリップ
897 :
895 :2005/07/17(日) 18:56:07 ID:nzJyoK1s
>>896 すいません、次は調べてから質問します。
どうもありがとうございました。
898 :
Now_loading...774KB :2005/07/17(日) 20:49:14 ID:FaeUw5A3
最近googleとかヘルプとか使えない可哀想な子ばっかだな
>>899 そういうお前も嫌みな言い回しでしか
誘導レスが出来ない可愛そうなやつ
俺はgoogleで商品検索する時必ず「円」をキーワードにする
ヘルプ見ろって言ってるやつ教える気ないだろw ヘルプには全部書いてあるんだから、それがわかるやつはここには質問に来ない。 そんなこともわからないのか
で、お前はどのくらい役に立つわけ?
>>902 全部書いてあるわけじゃないよ。
間違ったことが書いてある場合もあるし。
ヘルプ見ろってのはヘルプの例文を見ろってことだろう。 大抵のことは解決する。
なんだ、ヘルプにかこつけたアラシか。
そもそもそんなこと言ってたらこのスレの存在が意味ないっていうか。
いくらこのスレが「物凄い勢い」でも、 問題解決速度はヘルプやgoogleには勝てないからね。 問題解決までゆっくり待つことが出来る人だけ質問すればいい。 せっかちな人はヘルプを見るか、googleを使えってことだわな。
this[]の使い方間違ってたときとか、 ここにAS書けば数分で答え出たりして、 検索よりもずっと早い罠 あと読み方とか呼び方分からないことだと 調べようがなかったりする。そういうときこそここ 最初から調べたり学ぶ気がない、丸投げするつもりの奴を ヘルプ嫁って追い出しているだけでそ
タイピングソフトを作成しようとしています。 以下のスプリクトはランダムで問題を出題するものですが、 順番どおりに表示させて、繰り返さずに文章が終わったら終了するにはどうしたらよろしいでしょうか? onClipEvent (load) { saidaimondaisuu=10;//出題数 mondaisuu=0;//出した問題数 //出力する日本語の一覧作成 nihongoword=new Array("テスト","赤ちゃん","僕"); //出力するローマ字の一覧作成 word=new Array("TESUTO","AKACYANN","BOKU"); // テキストボックスを初期化する関数 function empty(){ this.nihongo=""; this.rouma = "";//問題のローマ字を入れるテキストボックスを初期化 this.input="";//キーボードから打ったキーが正解だった時入れるテキストボックスを初期化 } function wordput(){ empty();//テキストボックスを空にしてくれる関数empty()の呼び出し i=0;//文字列の何文字目を指しているかを表す変数、初期位置は最初の文字に設定 randomchi=Math.floor(Math.random()*word.length); this.rouma=word[randomchi]; this.nihongo=nihongoword[randomchi]; } function check(){ if(String.fromCharCode(Key.getAscii()).toUpperCase()==this.rouma.charAt(i)){
root.param.seikaihenkou();//正解数を増やす関数seikaihenkou()の呼び出し this.input=this.input+this.rouma.charAt(i); i++; //最後の文字まで打ち終わったらテキストボックスを空にして新しい文字列を入れる //関数wordput()を呼び出す if(i==this.rouma.length){ i=0; mondaisuu++; if(mondaisuu>=saidaimondaisuu){ _root.param.end();//結果表示に行く前にパラメータを変数に入れる関数end()の呼び出し _root.mondaisuu=saidaimondaisuu; _root.gotoAndStop("result"); } wordput(); } }else{ _root.param.machigaihenkou();//間違い数を増やす関数machigaihenkou()の呼び出し } } wordput(); } onClipEvent(keyDown){ check(); }
>>910 質問の意味がよくわからないけど、ランダムで出題される問題を、
テスト → 赤ちゃん → 僕
の順番で出題させて終了したい、って事かな?
だとしたら、最初の4行を
nihongoword=new Array("テスト","赤ちゃん","僕");
word=new Array("TESUTO","AKACYANN","BOKU");
saidaimondaisuu=word.length;
mondaisuu=0;
wordput()を
function wordput(){
empty();
i=0;
this.rouma=word[mondaisuu];
this.nihongo=nihongoword[mondaisuu];
}
に修正してみたらうまくいくかも
質問している内容が違う意味だったらスマン
>>912 質問の意味はその通りでございます。
ありがとうございます。
ただ、指摘の通り入力してみたところ、
シーン = シーン 1, レイヤー = レイヤー 3, フレーム = 7 : 行 16:シンタックスエラー
empty();
シーン = シーン 1, レイヤー = レイヤー 3, フレーム = 7 : 行 17:シンタックスエラー
i=0;
シーン = シーン 1, レイヤー = レイヤー 3, フレーム = 7 : 行 19:シンタックスエラー
this.rouma=word[mondaisuu];
と、エラーを吐き出してしまいました。
何か改善策はありますでしょうか?
>>913 その前に最大問題数を10にしてるけど3にしたら正常に動くの?
>>913 おれの書き方が悪かった
912のwordput()を...と書いたのは、正確には
↓910で書いてあるこの部分を
function wordput(){
empty();//テキストボックスを空にしてくれる関数empty()の呼び出し
i=0;//文字列の何文字目を指しているかを表す変数、初期位置は最初の文字に設定
randomchi=Math.floor(Math.random()*word.length);
this.rouma=word[randomchi];
this.nihongo=nihongoword[randomchi];
}
↓このように修正してほしい、ってこと
function wordput(){
empty();//テキストボックスを空にしてくれる関数empty()の呼び出し
i=0;//文字列の何文字目を指しているかを表す変数、初期位置は最初の文字に設定
this.rouma=word[mondaisuu];
this.nihongo=nihongoword[mondaisuu];
}
>>915 出来ました!ありがとうございます!!!
917 :
Now_loading...774KB :2005/07/20(水) 08:09:24 ID:ri+UweyS
オブジェクトの重ね順(FlashMX2004使用)
球体オブジェクトの後ろで、背景が上方向にスクロールして
いくASを書いています。球体のレイヤーは1番上に置き、背景は
元のbackAを
backA.duplicateMovieClip("backA1", -1);
で複製し、
backA1._xscale = -100;
で左右反転させたものが交互に流れていくものです。
最初のbackAでは、球体は前面にありますが、次のbackA1ではこの
背後に隠れてしまします。
対応として、duplicateMovieClipの深度を1→-1に変更しましたが
効果はありませんでした。
swfは
http://oekaki.s56.xrea.com/x/uploader/src/oe1805.swf です。
どうしたものでしょうか?
>>917 球体オブジェクトを普通に配置しただけだと、-の深い深度に自動で作られるよ。
trace( backA1.getDepth() ); trace( 球体のMC.getDepth() ); backA1.swapDepths(深度); 球体のMC.swapDepths(深度); このあたりの関数を使って調整してみては?
920 :
FCS :2005/07/20(水) 11:11:46 ID:eScWyow8
FlashCommunicationServer(以下FCS)のActionScriptについて分かる方がいらっしゃいましたら教えて下さい。 FlashMXのActionScriptでは、下記の様なコードにてPHPと連携をはかっておりますが、FCSではLoadVarsが使用できません。 FCSでは、どのようにしてPHP等と連携を行えば良いかお教え下さい。 また不可能であれば、その旨お教えいただきますようお願いします。 SendLoadVars = new LoadVars(); LoadLoadVars = new LoadVars(); SendLoadVars.UserID = "*****"; SendLoadVars.SendAndLoad("xxx.php",LoadLoadVars); LoadLoadVars.onLoad = function() { ……… } 乱文にて申し訳ありませんが、宜しくお願いいたします。
921 :
917 :2005/07/20(水) 16:32:49 ID:MTWjUNve
>>918 , 919
書きそびれましたが、球体オブジェクトはただのJPG画像で、
上のレイヤーにただ置いてある状態です。
919さんの指摘にあるように、MC化して深度を調整してみます。
922 :
917 :2005/07/20(水) 17:43:54 ID:0NSQmPbC
球体のMC.swapDepths(深度)で調整できました。 ありがとうございます。 追加の質問)swapDepths()が無い場合、球体の深度Ball_Dが -16381 と表示されました。-16381は最低深度ですが、指定が無い場合は必ず これになるのでしょうか?
923 :
Now_loading...774KB :2005/07/21(木) 03:53:33 ID:hagKd0Po
変数の扱いについて(FlashMX2004使用) テキストフィールド入力欄(変数:sp)を用意し、 sp = ""; unit = _root.sp; i += unit; として、spに1を入れると i= 011111111111111111111111111111111・・・・ ←@ となります。一方unitを unit = (_root.sp/10)*10; に定義して、spに同じく1を入れると i= 74 ←A のようになります。 数学的にはsp=unit=1ですが、@とAの違いは 何に由来するものでしょうか?
string文字列の代入かな?
>>923 AS1.0には型の扱いが厳密じゃないからわかりにくいけど
spがstring型になってるので文字としての「1」が追加されていくので
最初の0に加えて1の文字(string)が後ろに続く。
一方後者はnumberとして扱われるので計算撮りの結果になる。
・・・という結果だと思うけど、その実験がどうやったのかよくわからん。
>>922 Flashの編集画面で設置されたMCなら-16381から配置されます
ってかその質問は必要なの?
自分で調べたらどうだった?
927 :
Now_loading...774KB :2005/07/21(木) 19:19:16 ID:+DuOAJrH
swfが貼られているURLによってフレームを変える事ってできませんか? 例 aaa.htmlに貼られていたらフレームラベルaaaに移動 bbb.htmlに貼られていたらフレームラベルbbbに移動
>>927 htmlからの呼び出しの時に、?labelname=aaa
とか付けて呼び出して、labelnameの内容によって飛び先を変えれば出来る。
929 :
923 :2005/07/21(木) 20:04:45 ID:js/u5Apv
外部テキスコ入力は、 hoge=Number(gaibuNyuryoku)って感じで数字にしてやらないと。 厳密にやるなら数字以外のNaNかを調べて NaNを加算や代入して ASがそこで止まらないようにする工夫もいる
931 :
Now_loading...774KB :2005/07/21(木) 20:43:50 ID:+DuOAJrH
>>927 すいません。調べてみましたが、よくわかりません。
?labelnameの取得ってどうやるのですか。
環境はMX OSはXPです。
>>931 "hoge.swf?labelname=aaa"
とか
"hoge.swf?labelname=bbb"
で呼び出して、
_root.gotoAndPlay( _root.labelname );
で実験してみて。
933 :
Now_loading...774KB :2005/07/21(木) 20:56:45 ID:+DuOAJrH
>>932 ありがとうございます。
その呼び出し方がわかりません。
>>933 いや、なんか、俺の方が質問の解釈を間違っていたような気がする。
スマン。
935 :
Now_loading...774KB :2005/07/21(木) 21:01:44 ID:+DuOAJrH
>>934 あ、すいませんできました。
ありがとうございました。
936 :
Now_loading...774KB :2005/07/21(木) 23:23:41 ID:+DuOAJrH
あ、すいませんASと関係ないけどもう一つ hoge.swf?labelname=aaa のlabelって変数と同じ扱いでいいのでしょうか?
あ、すいません ×label ○labelname です。
>>937 そうです。
_root.labelnameというString型の変数です。
この場合 "aaa"が入ってます。
>>938 ありがとうございました。
勉強になりました。
940 :
Now_loading...774KB :2005/07/22(金) 17:43:20 ID:fitpmGxI
・・・これを一から教えて欲しいと?
942 :
940 :2005/07/22(金) 19:19:44 ID:mbGDuIC5
確かに、むしのよすぎる質問でした。 難しいASはよく分からないので、ボタンオブジェクトと タイムラインを移動させるASを組み合わせて作っていて、 具体的には、第一階層のメニューボタンにrollOver(rollOut) するとgotoAndPlayで第二階層のメニューボタンが出てくる(閉じる) アニメーションのフレームに飛ばすってやり方で、第二階層の メニューボタンが開く(閉じる)ところまでは出来たんですけど、 そこから、第二階層のメニューを開いたまま操作するってとこで つまづいてるんです。 で、こんな変な力技使わなくてももっとスマートに出来るんじゃ ないのかと思い書き込みました。 上記方法の続きでも、まったく別の方法でもヒントいただければ 勉強しますので、いただけたら幸いです。
944 :
940 :2005/07/22(金) 19:35:33 ID:mbGDuIC5
>>943 >そのやり方を徐々に効率化していけば出来ると思うけど。
>基本的にはその方法がある意味普通だよ。
そーなんだ。参考サイトまで教えてくれてありがとうございます。
ちょっと色々実験してみようと思います。
ほんとに感謝!!
945 :
Now_loading...774KB :2005/07/22(金) 21:21:34 ID:zwHA/dfJ
2005という文字列から05を抜き出す為にはどうすればいいんでしょうか? (これは例で、2005という数字も変数とお考え下さい) 三桁目と四桁目という感じで、上二桁を省略した数字を抜き出したいんです。 どなたかご回答お願い致します。
String.substr String.substring
>>945 2005が数字なら
y = 2005;
trace(y-Math.floor(y/100)*100);
2005が文字列なら
y = "2005";
trace(y.substr(2,2))
ヘルプでStringクラス見れ
str="2005"; strArr=str.slice(""); trace(strArr[2]+strArr[3]); とか
文字列と申しましたが、数字の間違いでした。 丁寧なご返答ありがとうございました。
>>950 どこというか、根本的にそんな機能ないです
954 :
951 :2005/07/23(土) 02:52:29 ID:DuZvu8zG
やってみます!
955 :
951 :2005/07/23(土) 02:59:02 ID:DuZvu8zG
すいません ageちゃいました
それ以前に人の回答を無視したあげく、 人のレス番を詐称するなw
957 :
952 :2005/07/23(土) 03:02:09 ID:DuZvu8zG
そして私は952でした。 cocomonarだと951なのに。why 生まれて初めてスレ立てました。ちょっとどきどきしたっす。
958 :
952 :2005/07/23(土) 03:04:37 ID:DuZvu8zG
あ ごめんなさい。 なんかへんになってる書き込めたり込めなかったり 俺が変なのか そーかそーか
960 :
952 :2005/07/23(土) 03:13:18 ID:DuZvu8zG
スレ立ておつってことで一応対応
>>952 はMC内にhtmlを表示したいってことなんじゃないの?
getURL("url")は、無理矢理ページ開くだけの機能しかありません
MC.loadMovie("〜.swf")でswfやjpegのみMCの中に開く機能があります。
何がしたいかによって解答が異なります。
962 :
952 :2005/07/23(土) 03:39:13 ID:DuZvu8zG
普通にhtml側でフレーム使って、BBS開いているように見えるのだが swfの中のMCに掲示板開きたいってわけじゃないのね
iframeだね。
965 :
952 :2005/07/23(土) 04:06:53 ID:DuZvu8zG
ありがとございますがしかし すいません意味わからないんで勉強してきます。 movieclipの中に掲示板てこともできるんですか?!
そこのBBSはFlash使ってない。
無料でAS2使って組めるFlash用のIDEってありますか?
969 :
Now_loading...774KB :2005/07/23(土) 17:30:23 ID:40u6JJDI
FLASH内のボタンをクリックすると別のウインドウでFLASHを開くようにしたいのですが どのようにすればよいのでしょうか?
flashMX にて ドラクエとかのエンディングででてくる 手書き風の THE ENDをアクションで作りたいのですが どうしたらいいでしょうか? 一応構想では THE ENDに沿って動くムービークリップを つくり(モーションガイドで) それを複製して文字を書いてるように見せたいのですが それだと 書いた文字がある程度すると消えていってしまいます 重くなるし 描画APIの方が良さそうですけど どうやって使うものなんでしょうか?
973 :
Now_loading...774KB :2005/07/24(日) 03:18:03 ID:j/+Ui8CT
FLASH MX レイヤ1にボタンを配置、レイヤ2にムービークリップsampleを配置し、 sampleを開いた1フレーム目に function test() { this.gotoAndPlay(_currentframe + 1); (中略) } とフレームアクションでメソッドを定義しました。 レイヤ1のボタンからtest()メソッドを呼び出してsampleを再生させようとしたのですが、ボタンに on(press) { _root.sample.test(); } と書き込み、パブリッシュしたファイル上にてボタンをクリックしても動作しません。 test()にtrace("ok");を追加してみましたが、文字が表示されない為ボタンからの命令が伝わっていない様です。 何処が間違っているのか教えていただけませんでしょうか。
>>972 後から消してフレームのリバースしとけ
AS関係なし
flash linetoあたりで検索すれば
ASで描画は分かるだろうけど、その目的じゃ使う意味がない
>>973 sampleの1フレにtrace(this)書いてみてパス確認。
traceすら表示されない場合、グラフィックになっている疑いがある
975 :
973 :2005/07/24(日) 04:11:08 ID:7vGfbwzW
>>974 ボタン(クリップ名button、enterFrameに記述)とsampleの1フレーム目にtrace(this);を入れてみたところ、以下の様に出ました。
_level0.instance5.sample
_level0.instance5.button
instance5は両方を入れている上位のムービークリップだと思います。
なのでbuttonからは_root or _parent.buttonで指定出来ると思うのですが、試しにbuttonに
on(press) {
_root.button.gotoAndPlay(2);
}
と書いてみても、やはり動作しません(_parentも同様)。
sampleはムービークリップになっており、クリップ名も本体とAS記述共に間違っていませんでした。
button押されたら、 trace(this)するようにしてみると分かる ボタンのthisは特殊で、置かれているMC、 その場合instance5を示す。 んだから、_parentいらない。 _root.instance5.sample.play(); もしくは、 this.sample.play(); で動くはず
質問です。 競馬ゲームを作りたいのですが、 ゲーム本体はCGIでレースを実行させ その結果をASに読み込んでFlashで動かしたいのですが可能でしょうか? ASに送るデータはスピードや座標を考えています。
>>978 さんありがとうございます。
がんばって作ってみます
>>973 ファンクション内でthisを使うとややこしいのでthisを渡す方法がいいかも。
function test( thismc ) {
thismc.gotoAndPlay(thismc._currentframe + 1);
(中略) 以下 this や this省略形を thismc に置き換える
}
on(press) {
_root.sample.test(this);
}