ActionScript 誰かが物凄い勢いで解答するスレ 6
1 :
Now_loading...774KB :
05/02/12 20:29:02 ID:PqpEL5pK
3 :
Now_loading...774KB :05/02/12 20:49:43 ID:PqpEL5pK
4 :
Now_loading...774KB :05/02/13 16:36:59 ID:aEFKJt4F
MX2004 XPです ある参考書の例文で ○ | ↑ ↑ MC goal_x として、MCにAS //バネ運動 onClipEvent (load) { deccel = 4;//減速の度合 goal_x = 250;//ゴール位置 } onClipEvent (enterFrame) { //加速度は距離から算出 dist = goal_x - this._x; accel = dist /deccel; speed += accel; this._x += speed; } これをプレビューするとMCがgoal_xの右に移動→また左へのばね運動をするのですが、 なぜでしょうか?loadで、speedの初期値がないのならば、これはgoal_xでとまるのではないので しょうか?直前に左右に減速しながら移動するMCの項目はりかいしたのですが、 これは少し疑問におもっています。どなたか解説よろしくお願いいたします。
6 :
5 :05/02/13 17:45:45 ID:xzTLprLE
今、自分なりに考えたのですが、EnterFrameだから 左にあるMCがフレームごとに加速がたとえば30.20.10・・・のように goal_xに向かって付いていき、goal_xを通過したら逆に少しずつ加速値が-10.-20.-30のように 減速していく、という感じでしょうか? 説明下手ですが、こんな感じでしょうか?
真中に、trace(dist)入れれ マイナスの値が入るはず
8 :
5 :05/02/13 17:52:10 ID:xzTLprLE
>>7 その通りになるました。こういうことだったのですね。
ありがとうございました。
1、こんなMCをつくりました。 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | 削除します よろしいですか? | | ____ ____ | | | Yes | | No | | |  ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓
2、_rootにYesを押したら処理Aを実行するActionScriptを作りました。 if ( YesNoMsg() == "Yes") { 処理A(); } 3、関数YesNoMsgの中身を作ります。 私はYesかNoを押すまで無限ループをする処理を思いつきました。 が、プレビュー中にFlash2004がフリーズしてしまいました。 ええ馬鹿です。 関数YesNoMsgの中身は、 1、確認MCをattachMovieする 2、ユーザがYesかNoを押すまで待つ。 3、Yesだったら"Yes"、Noだったら"No"を返す。 こういうプログラムは もしからした実現不可能なのでしょうか? このMCは汎用的に使いたいので Yesボタンに処理Aを埋め込むのってのは無しでお願いします。
addlistener
13 :
12 :05/02/13 18:16:27 ID:xe6h36cz
いあ、違う。 mouseDownと yesボタン.hitTest(マウスの座標) ダイアログ出ているとき操作できなくしたいみたいだが 実際作ると面倒だよ。時代に逆行したプログラミングだし 画面いっぱいのボタンに、useHandCursor=flaseで 他のもののクリック誤魔化せるかもしれないから試してみては
おっさん、本買って一冊読めよ。
ちがうよ、オサーんはウインドウズ3時代にイジメラレタンダヨ。 大目に見てやれよ。
>>10 です
しくしく
あのMCは
時代に逆行したオサーんの考え方なんですね。
VBみたいなプログラミングスタイルは
敬遠されるとですね。
ボタンにイベントをaddEventListenerして解決しますた。
17 :
Now_loading...774KB :05/02/14 16:04:52 ID:ygF/Tq/c
彼女の肛門から消化できなかったモヤシが出ていたので質問させてください。 /* フレームすくりぷと */ onEnterFrame = function () { if (Math.sin(ball_mc.hoge)<=-0.99) { clear();} if (ball.foo>=1) { lineStyle(1, 0x0000ff, 100); } else { lineStyle(1, 0xff0000, 100);} moveTo(0, 200); lineTo(_root.ball._x, _root.ball._y);}; /* ball_mc すくりぷと */ onClipEvent (enterFrame) { hoge += 0.2; _x += foo; _y = 200+hoge*5*Math.sin(hoge); if (_x>=450 || _x<=0) { foo = -foo; hoge = -hoge;}} onClipEvent (load) { foo = 2; hoge = 1;} この様に、移動しているballに対して固定点からラインを描写しているのですが、 現在はある点に到達した際に clear() をしてそれまでの線を消す制御を取っています。 ここで質問なのですが、俗に言うチェイスオブジェクトのように、描写し終えたラインに対してディレイを掛けて消して行く方法はありますでしょうか。 残像5本で消したい場合、5つの関数をインクリ変数制御でその都度呼び出して描写→消去していく方法は思いついたのですが、 残像数が増えた時の事を考えて、もしも一つの関数内で制御する方法があればと思って質問させてもらいました。 何か方法がありましたら是非ともご教授くださいませ。よろしくお願いします。
非常に見にくくて申し訳ありませんです。 ball_mc と書いてないのは記述ミスです。失礼しました。
>17 まずは線引き用の空MCを5つ用意しましょう。 それで再チャレンジして。
Flash Lite 1.1でやってます。 functionがないのでcallでフレームのスクリプトを呼び出すことになるのですが、 functionにおけるreturnのように途中で呼び出し元のスクリプトに戻すことは できないでしょうか? もちろん戻り値などの処理は必要ありません。
21 :
Now_loading...774KB :05/02/14 18:00:07 ID:m8erKS3W
MX使っています。 ActionScriptで、JavaのClass.forName().newInstance()に 相当する操作は出来ないでしょうか? 勢いでこんなコードを書いてみましたが、 var name = "Test"; var obj = eval("new " + name + "()"); やはりダメでした。 なにかうまいやり方はあるものでしょうか?
>>19 やはり残像数だけ複製させて仮想的に戻り値を持たせるのがよさそうですね。
ありがとうございました。
初心者です。 環境 winXP FlashMX 外部から変数を取得するときについてです。 <EMBED src-"sample.swf?txt="test"" ...... の用にswfを呼び出したとき txtとtestはAS側からどのようにすれば取得できるのでしょうか? よろしくお願いします。
_root.txt
>>21 var obj = new [name]()
//var obj = new _global[name]()
var obj:Test = new Test(); の場合は?
27 :
21 :05/02/15 20:02:08 ID:2Hg1jMV0
>>25 インスタンスキターーーーーーーー!!!!!
25はネ申。
サンクスコ!
28 :
Now_loading...774KB :05/02/16 15:16:09 ID:+2/c4bjO
ボタンのスクリプトを教えて下さい。 ムービーは最初からBGMが流れています。 BGM再生中にボタンにオンマウスすると [■停止]シンボルが表示され、クリックでBGM停止。 BGM停止中にボタンにオンマウスすると [▲再生]シンボルが表示され、クリックでBGM再生。 MAC OS XでFLASH 5を使用しています。 よろしくお願いします。
29 :
Now_loading...774KB :05/02/16 16:04:18 ID:DCFAhde6
ネット上に公開した(または、された)ライブカメラ映像を フラッシュの中に取り込みたいんですけど どうしたらいいのかわかりません どなたか教えてください
30 :
29 :05/02/16 16:06:26 ID:DCFAhde6
ちょっと説明不足だったので付け足します フラッシュの中に取り込むというのは たとえば公開されているライブカメラ映像に フラッシュで枠をつけたしたりして公開したりするということです 説明下手ですいません
>>28 //MCボタン、インスタンス名はcontrolBtn
//ラベルレイヤー、スクリプトレイヤー、テキストレイヤー、ボタン形状レイヤーを作成
//1フレーム:ラベル "none" 、テキストレイヤーは無記入
//2フレーム:ラベル "start" 、テキストレイヤーは「再生」、スクリプトレイヤーにthis.stop();
//3フレーム:ラベル "stop" 、テキストレイヤーは「停止」
//以下MCボタンクリップイベント
onClipEvent (load) {
btnFlg = "stop";
}
on (rollOver) {
this.onEnterFrame = function() {
if (btnFlg == "stop") {
this.gotoAndStop("stop");
this.onMouseDown = function() {
stopAllSounds();
btnFlg = "start";
};
} else if (btnFlg == "start") {
this.gotoAndStop("start");
this.onMouseDown = function() {
_parent.mainBGM.start(0, 999);
btnFlg = "stop";
};
}
};
}
on (rollOut) {
this.gotoAndStop("none");
}
32 :
Now_loading...774KB :05/02/16 16:12:27 ID:cOl0xs3N
FlashMX 2004 Professional + WinXP です。デバッガについて教えてください。 クラスは外部ファイルなのでブレイクポイント付けられませんが、どうやって デバッグすればいいですか? fla から明示的に呼び出すメソッドならともかく、イベントで呼び出されるメソッドは ブレイクポイント付けられないと追っかけられないです・・・
>>30 無断かい?隣接権とかありそうな希ガス
ライブカメラ映像製作者、著作権管理者と相談しガンがってください
それが嫌ならテーブルででも配置すればいいさ
>>31 fla5だと匿名関数いけなくない?
う~ん、条件変えてやるならありそうだけど。
サウンド用のMC用意して、そいつをとめたり再生ヘッド送ってやったり
>>28 Flash5ならこんな感じがいいかも。
MCを作り、
1フレーム目に停止ボタンを置く
2フレーム目に再生ボタンを置く
1フレーム目にフレームアクション stop();
ボタンはオーバー等の各フレームにそれなりの絵を入れておく。
停止ボタンのアクション
on( release ){
gotoAndStop(2);
音楽の停止用アクション
}
再生ボタンのアクション
on( release ){
gotoAndStop(1);
音楽の再生用アクション
}
36 :
28 :05/02/16 16:49:13 ID:+2/c4bjO
>>31 ありがとうございます。
>>35 ありがとうございます。
教えて頂いた方法で両方試してみようと思います。
とても助かりました。
環境 FlashMX Win2000 質問 MovieClip.loadMovieの正否の確認はどうすればできるでしょうか? どこまで読み込んだとかじゃなくて読み込み自体が成功したかどうかです。 ファイルが存在しなかった場合等を判定したいです。 getBytesTotalが0かどうかで判定するとかでしかできないでしょうか? お願いします。
>getBytesTotalが0かどうかで判定 うん。
>>37 loadMovieじゃなくてMovieClipLoaderってのつかいなしゃい。
どこで質問すべきか迷ったのですがこちらで質問させてください。 環境はMXとWindows2000ですが、flaファイルに何かすることができないので 環境は特に気にしないでください。 下記のようなメールマガジン配信登録を行なっていました。 1.ユーザーがswfにメールアドレスを記入して送信ボタンを押す ↓ 2.(ColdFusionが動いているサーバ内)cfmファイルにPOSTでメアドを渡す ↓ 3.cfmファイルが受け取ったメアドでDB内検索 ↓ 4.検索の結果に応じてcfmファイルが"a" "b"などをswfに返す ↓ 5.cfmファイルから返ってきた変数を受け取って表示が変化する 上記のものをColdFusionを使わずにやるということになってしまいました。 flaファイルがないので指定されているcfmファイルは変えようがなく 当該cfmの頭にPHPを記述してPHPで値を返そうと思ってますが 思ったように返せなくて行き詰まっております。 どういった記述をすればswfの方で受け取れますでしょうか? Action Scriptのソースだけは抜いたので晒しておきます。
41 :
32 :05/02/16 20:11:37 ID:cOl0xs3N
>>32 です。しつこくてすみません。
皆さん困ってないんでしょうか?
クラスつくった時のデバッグってどうやってるんですか?
42 :
40 :05/02/16 20:13:34 ID:A4P9Oxcz
ソースです。 足りなかったら他も探してみます。 よろしくお願いします。 onClipEvent (load){ url = "***.cfm"; function (){ (); _parent; sendLoadVars = new LoadVars(); loadLoadVars = new LoadVars(); loadLoadVars.onData = function (data){ (_parent); _parent; ret = data; if (ret == -1){ _parent.mcMailForm.gotoAndStop("ok"); } else if (ret == 0){ _parent.mcMailForm.gotoAndStop("ngErr"); } else if (ret == 1){ _parent.mcMailForm.gotoAndStop("ngDouble"); } else if (ret == 2){ _parent.mcMailForm.gotoAndStop("ngInvalid");
43 :
40 :05/02/16 20:14:11 ID:A4P9Oxcz
続きです。 } else{ _parent.mcMailForm.gotoAndStop("ngErr"); } // end if ret = NULL; (_parent); } // End of the function (); } // End of the function initLoader = function (); function (){ delete("sendLoadVars"); delete("loadLoadVars"); initLoader(); } // End of the function resetLoader = function (); function () {sendLoadVars.email = _parent.mcMailForm.txtEmail.text; sendLoadVars.sendAndLoad(url, loadLoadVars); } // End of the function sendData = function (); initLoader(); _parent.mcMailForm.gotoAndPlay("normal"); }
>>41 デバッグはブレークポイントだけかよ。
そもそもブレークポイントなんてそんなに使ったことないし。
>>40 質問の意味が不明。
こうやったが駄目で何処が悪いかなら答えやすいが
どう記述したら、という質問は答えようが無い。
ソースだけは抜くって、ちゃんとFla作ったとこに筋と金通してソースファイル貰えよ。 つーか、普通そのソース見りゃ何返せばいいかわかんだろ。 PHPの書き方なら他所で聞けよ三流業者。
47 :
32=41 :05/02/16 20:36:38 ID:cOl0xs3N
>>44 どうも。ブレイクポイント以外だと trace とかで出力するってことですか?
かなり原始的だなあ。
assert も無いから自分でデバッグ用の条件式埋め込んで、
コード汚さなきゃいけないんでしょ?
OOPだのなんだの言っといて、肝心のクラスのコードでデバッガ使えないなんて
ありえないよなあ。きっと俺がどっか間違ってるんだと信じたい。
OOP実装とデバッガ実装混同イクナイ。
49 :
32=41=47 :05/02/16 20:45:49 ID:cOl0xs3N
>>48 いや、混同じゃなくてさ。
C++やJavaの開発者も取り込みたがってると思うんだよ、Macromediaは。
ActionScriptも2.0でだいぶOOP的に洗練されたし、Flashプロジェクトなんて
バージョン管理用の仕組みも導入されたし。
なのにデバッグ環境が貧弱っていうか、外部ファイル使う場合には存在しないってのは笑い話だよ。
俺が勘違いしてるんじゃなければ。
少なくともそんな貧弱な開発環境で本格的にチーム開発なんてできるわけない。
試験とかどうすんだよって感じ。
論点のすり替え最悪。
理論をまとめると OOP実装なら当然デバッグも実装だよな なんだよ騙された!無いじゃないか。 デバッグつけないでOOP実装するなんて最悪だ!謝罪しる! こんなこと言ってるわけだが。
52 :
40 :05/02/16 20:55:01 ID:A4P9Oxcz
ごめんなさい。質問が下手で…。 辛うじてわかる人間が自分のみで、それでもさっぱりな技術なので…。 元のcfmは↓こうなっております。 <CFSETTING ENABLECFOUTPUTONLY = "Yes"> <CFPARAM NAME="email" DEFAULT=""> <CFIF email NEQ ""> <CFQUERY NAME="chkEMAIL" DATASOURCE="s"> //DB内に#email#が存在するかどうかチェック </CFQUERY> <CFIF chkEMAIL.cnt NEQ 0> <CFOUTPUT>1</CFOUTPUT> //重複 <CFELSEIF chkEMAIL.cnt EQ 0> <CFQUERY NAME="insEMAIL" DATASOURCE="s"> //存在しないので#email#をinsert </CFQUERY> <CFOUTPUT>-1</CFOUTPUT> //正常に登録 <CFELSE> <CFOUTPUT>0</CFOUTPUT> //上記以外でエラー </CFIF> <CFELSE> <CFOUTPUT>2</CFOUTPUT> //未記入 </CFIF>
53 :
40 :05/02/16 20:56:17 ID:A4P9Oxcz
それでまず未記入を返そうと思い、下記のように記述しましたが うまく返せませんでした。$_POST['email']には格納されているようです。 <? $email = $_POST['email']; if(!isset($email)) { $data = "2"; print "sendLoadVars = $data"; } ?> ただ変数名がおかしいだけなのでしょうか…。
54 :
49 :05/02/16 20:56:23 ID:cOl0xs3N
>>50-51 いや、勘違いさせたんならすまん。
別にMacromediaを責めてるわけでも何でもなくて、
本当にクラスのコードをデバッガで追えないの?
他の部分は頑張ってるのに何でこんなに大事なとこが
実装されてないのかなあ?もったいないな~って感じだよ。
ていうか本当にみんな、trace使ってデバッグしてんのか?
>>54 おれ、traceしてるよ。その方が楽だし。何でデバッガなんてかったるい物使うかなと思う。
デバッガなんて無いのが普通だと思ってるからなんも苦もないし。
つか、40むかつく。
つうかなんでここ数年で登場したスクリプトが 今主体のプログラムレベルまで高機能だと思うわけよ。
ああ、そうかMXか。 じゃああきらめるしか・・・。
mxはエラーで処理停止になっから、無理なんだよ 2004でloaderがエラーを返す仕組みになったから、出来るようになったんだよ
漏れ40知人かも。 すんげえ似た案件メールで相談してきた 頑張れで済ませたが・・・
知人というか上司?
>>49 2004proだと、デバッガでステップインして見ていくしかないね。
インスタンスを扱う箇所で止めて、ステップインしながらクラスの処理を確認。
複雑な作りだと面倒だけど、現状はそれが一番かな。
#assertとtraceってそんなに違う?止まるか止まらないかの差じゃない?
actionscript2.0について詳しく解説しているサイトありますか?
JAVAの入門サイトがお勧め
>>64 マルチする場合は向こうのスレにこっちで聞く旨を伝えるようにして欲しい
答えてくれている人が可哀想じゃないか
スマン。>66間違えた。 向こうから誘導された事を書くように。
MACos10/FLASHMX2004/safari、IE、netscape
http://www.fumiononaka.com/TechNotes/Flash/FN0307007.htmlの 外部swfファイルを読み込む記述をしました。
フレームに記述したactionscript
stop();
this.MC.loadMovie("test/test.swf");
ムービークリップMCに記述したactionscript
onClipEvent (data) {
if (this.getBytesTotal()>0 && this.getBytesLoaded()>=this.getBytesTotal()) {
this.gotoAndPlay(2);
}else{
this.stop();
}
}
そして読み込みの対象となるswfファイルには
LOADINGの文字が点滅するムービークリップが1フレーム目に配置されています。
これをアップロードしてプレビューしたところ
読み込みの間1フレーム目でずっと停止が行われる・・・はずなのですが
読み込み中何も表記が行われません。要因はどこにあるのでしょう?
よろしくおねがいしますです。
しまった、直リンしてしまった・・・(汗
読み込みの対象のswfに書かなきゃ駄目だよ。
アドベンチャーゲームみたいなもので、文字を一文字ずつ表示させたいんですがどうすればいいでしょうか。
もういいから つまらん釣りはよせ
>73 1読んで
76 :
Now_loading...774KB :05/02/17 16:07:33 ID:fsna1xS6
>>73 一文字ずつムービークリップしてタイムラインに一つずつ配置
Math.randomで、同時に違う数字を出す方法教えてください。 環境はFLASH5です。
>>71 サンプルを開いたところ読み込み対象のswfではなく
swfを読み込むムービークリップに直接asが記述してあるから違うかと。
>>77 完璧に同時は難しいな。
どのくらいの精度での同時?
>>77 2回実行すればいいのでは?ちゃんと違う数字を返してくれるよ。
>>77 ひょっとして、配列作ってシャッフルして取り出すとかのことかな?
返答サンクスです。
>>79 =81
スイッチAを押したら、変数Aと変数Bに
それぞれ違う数字を代入するようにしたいんです。
できますかねぇ・・・。
>>80 ふむ・・・。
2回実行ですか
ちと試してみますね。
>>82 昔、同じような質問に回答したような気がするが、こんなんだったような。0~9ランダム
r = 10;
a = Math.floor(Math.random()*r);
b = ( a+1+Math.floor(Math.random()*(r-1)) ) % r;
hensuA = Math.floor(Math.random()*xxx); hensuB = Math.floor(Math.random()*xxx);
漏れはFXで試して普通に返り値が変わってるけど、5だとSEED変えてないとか そう言うオチですか?
86 :
84 :05/02/17 18:13:13 ID:KW1vXCDs
あ、違う数字か。 同じになっちゃダメなのね。勘違いスマソ。
>>83 おお、サンクスっす。
>昔、同じような質問に回答したような気がするが
そうですか・・・。
すいません、これからは過去スレもちゃんと読むようにしますね(゜・ω;:..
とにかく、ありがとうございました~
==を使えばいいんじゃね?
89 :
Now_loading...774KB :05/02/17 19:08:54 ID:fsna1xS6
MX 2004 pro + WinXPです。 class Hoge extends MovieClip { Hoge() { trace("Hoge"); } } のようなMovieClipを継承するクラスをつくって var hoge: Hoge = new Hoge(); とやっても当然?ながら何も表示されません。 これを表示させるようにするには createEmptyMovieClip() か attachMovie() を使うんですか? その場合MovieClipを継承したクラス名はどうやってメソッドに渡せばいいですか?
>>83 それうまいことやってるね~
bのmath.randomで出る値が9以上だったら、aと被るから
9以上を出さないようにしてるんだね。
うん、うまい
マウスチェイサーの動きにバネのような動きを加えたいのですが うまくいきません(´;ω;`)ウッ… マウスを動かす早さに比例して、マウスを止めた時にチェイサーも比例して動き 反復運動しながら静止する。というような動作です。 言いたい事うまく伝わるかな?(´;ェ;`)ウゥ・・・ 環境はFlashMX2004です。 どなたか教えてください。
とりあえずバネの動きを、x方向のみで作ってみれ ここの少し前のログに似たスクリプトあるし。
93 :
91 :05/02/17 21:18:02 ID:21JilLmW
上にあるログを参照して試してみたのですがやっぱりダメでした(´;ェ;`)ウゥ・・・ deccelやaccel等の記述の仕方も使ったことがない(スクリプトの検索でも見つからない) のでどうしたらいいかさっぱり。。。 独学で onClipEvent(enterFrame){ this._x += _xmouse (*か/の後に数値を入れる事によって遅れてついてきたりする) this._y += _ymouse (*か/の後に数値を入れる事によって遅れてついてきたりする) } までは分かったんですけど どなたか私にアドバイスお願いします。
94 :
89 :05/02/17 22:11:58 ID:fsna1xS6
ヘルプによると、あらかじめ空のムービークリップをライブラリにつくっておいて、 リンケージでクラスを指定しておき、attachMovieClip 呼び出せいと書いてありました。 スクリプトだけでできないですか?
>>93 変数の使い方を覚えなさい。
速度の変数ってものが必要。
96 :
91 :05/02/17 22:54:55 ID:21JilLmW
>>92 95
レスありがとうございました。
私の買って読んだ参考書には速度の変数って載ってなかったので
その存在自体知りませんでした。
もう一度自分で調べて出直してきますね。
お手数かけました。
右クリックを制御するスクリプトってあるんですか? Keyオブジェクトのようなものがあれば理想なんですが。。
class Hoge extends MovieClip { function Hoge() { trace("Hoge"); } function Hoge2() { trace("Hoge2"); } } var hoge:Hoge = new Hoge(); hoge.Hoge2();
101 :
Now_loading...774KB :05/02/18 14:50:33 ID:svt1a71x
MC1のボタンを押すと、MC1内ボタンが無効・MC2内ボタンが有効になり MC2の中にあるボタンを押すとMC1が再び有効に、MC2が無効になるASが 動作がうまいこといきません。 MC1のAS on (release) { _root.MC2.onPress={}; _root.MC2.enabled = true; _root.MC1.onPress={}; _root.MC1.enabled = false;} MC2のAS on (release) { _parent.gotoAndPlay(9); _root.MC1.onPress={}; _root.MC1.enabled = true; this.onPress={}; this.enabled = false;} クリックしても交互に有効・無効にならないんです。 一体どうしたらいいんでしょうか。
フラグ使えばどう? //MC1 on(release){ if((_root.flag++)%2==0){ /*有効です*/ } } //MC2 on(release){ if((_root.flag++)%2==1){ /*有効です*/ } }
あ、ごめん if((_root.flag)%2==1){ _root.flag++; /*有効処理*/ } のミスです
処理だけの問題じゃないのね、 on(release){ trace("MC1");//trace("MC2"); _root.MC1.enabled=false;//_root.MC2.enabled=false; _root.MC2.enabled=true;//_root.MC1.enabled=true; } これで問題ないよ。 ボタンに記述してるthisは_rootを指してるよ
105 :
101 :05/02/18 15:24:28 ID:svt1a71x
すみません、やはりうまくいきませんでした。 MC1に on(release){ _root.MC1.enabled=false; _root.MC2.enabled=true; } MC2に on(release){ _root.MC2.enabled=false; _root.MC1.enabled=true; } と記述しました。MC1、2共にどちらもクリック後、無効にした物が反応してしまいます。 多分こちらが103さんの意図を汲めていないせいだと思います…すみませんorz 103と104のASは併用するんでしょうか?
★level0(index.swf) loadMovieNum("sound.swf", 10); --------------------------------------------- ★level10(sound.swf) ■_rootのタイムライン上のスクリプト _global.Mute = false; //メニュー開く音 var btsound01:Sound = new Sound(); btsound01.attachSound("btsound01.wav"); function playsound01() { if (!_global.Mute) { btsound01.start(); } } //メニュー閉じる音 var btsound02:Sound = new Sound(); btsound02.attachSound("btsound02.wav"); function playsound02() { if (!_global.Mute) { btsound02.start(); } } ■_rootに置いてあるbutton_MC target = "bt01_sub01"; onRollOver = function () { _parent[target].tabOn(); _root.playsound03(); }; onRollOut = function () { _parent[target].tabOff(); }; というスクリプトを組んだのですが、index.swfを開いてbutton_MCの上にカーソルを合わせても音が鳴りません。sound.swfのみを開くと音が鳴ります。理由がぜんぜんわかりません。よろしくお願いします。
共有ライブラリで調べるといいことあるかも。
108 :
Now_loading...774KB :05/02/18 16:16:48 ID:Jfeba55Z
フラッシュっておかねかかるんですよね。 あと、どこでフラッシュって買えるんですか?
109 :
Now_loading...774KB :05/02/18 16:17:17 ID:Jfeba55Z
上まちがえました。すいません
>106 ん?そのスクリプトのみで sound.swfのみを開いたとき音がなる? playsound03てどこにあるんだ。 とりあえずloadMovieして sound.swf内の_rootのパスが変わっているのが原因だと考えられる。
>101,105 各ボタンへのパスが間違ってませんか?
113 :
101 :05/02/18 17:48:14 ID:6/89GeY0
バージョンはMX2004、Macで使っています。 >112さん MC1、2両方共直下にボタンを仕込み、 MC1、2自体はメインのタイムライン上に置いてあります。 パス、間違っているでしょうか…?
>101,113 MC自体をボタンにしているのではなく MC内にボタンシンボルを配置しているのなら パスも違いますし、スクリプト書く場所も違いますよ。 各ボタンシンボルにインスタンス名を付けて スクリプトはボタンシンボル上に書く。パスも変更。
>>107 調べてみましたが、今回のとはちょっと違う気がします。_level0は_level10にsound.swfを読み込んだあと、まったく何もしません。
>>111 すいません、間違えましたplaysound03→playsound02とかです。
>sound.swf内の_rootのパスが変わっているのが
sound.swfは、_level10の_rootにloadMovieNumで読み込んでいますが、_rootのパスが変わることってあるんでしょうか。
116 :
101 :05/02/18 20:14:15 ID:6/89GeY0
>114さん はい、MC内にボタンを配置しています。 「MC1のAS」等と書いた物は、 MC1の編集画面でボタンをクリックした状態で (ASパネルの左上に、シンボル:ボタンと出ている)ASを入力していました。 ASを書く場所はこれで合っていると思うのですが…違っていたらご指摘お願いします、 最初の書き方も悪くて、すみません。 もし上のスクリプトを書く場所が合っているとすれば、パスは 各ボタンシンボルにつけたインスタンス名まで、という事で良いでしょうか? b1がMC1内ボタンにつけたインスタンス名だとすると、_root.MC1.b1
level10の_root?なんだそりゃ?
>>117 levelごとに_rootがあります。
パスを変更しなくてもいいからloadMovieNumは便利よ。
_level1._rootなんて記述もあるかい?
悪いあった。 あんまみたことなかったから。
121 :
Now_loading...774KB :05/02/19 02:56:51 ID:zwm3pKx+
こんばんわ、 最近フラッシュはじめたんですけど、何枚か絵を描いて、それをランダムで表示させること、ASでできますかね。 あまり難しいことはわからないんですけど
できる
123 :
Now_loading...774KB :05/02/19 03:02:52 ID:zwm3pKx+
どういったASを使ったらよろしいんでしょう?
基本から押しえるのはめんどい。 下の見てどうすればいいのかわからなかったら、 聞くのはあきらめて自分で勉強して。 pictNum = 10; //絵の枚数 viewNum = Math.floor(Math.random()*pictNum)+1; this.gotoAndStop(viewNum);
125 :
Now_loading...774KB :05/02/19 07:15:26 ID:9Em3b6qg
すみません ASを打っていてどうしてもうまくいきません… フレーム1に配置されている ダイナミックテキスト[aaa]が配置されているMC[bbb]に onClipEvent(enterFrame){ abc = new Array("A","B","C","D","E"); cnt = 0; function left(){ cnt--; if(cnt < 0){ cnt = 4; }} function right(){ cnt++; if(cnt > 4){ cnt = 0; }} this.aaa = abc[cnt]; } のように書いて、ボタンに on(release){ _root.bbb.left(); gotoAndPlay(20); } と書いてトゥイーンを再生し終わったら gotoAndStop(1); で戻るのですが 戻っても"A"が表示されるのみでBやCが表示されません。 どなたか原因がお分かりでしたらご教授お願いします… OS…XP home バージョン…Flash MX です。
enterframeでfunction使って関数定義しまくるの気持ち悪い。
>>125 onClipEvent(load)
も使ってみよう。
129 :
106 :05/02/19 15:07:16 ID:IucW6Ifl
130 :
28 :05/02/19 18:35:34 ID:XEX0xBzB
Webのフラッシュに関する質問をさせて下さい。 ボタンシンボルをクリックすると、別ウィンドウが サイズ指定されて開く時のASを教えて頂けますか? FLASH5を使用しています。 どうぞよろしくお願い致します。
>>106 index.swfのライブラリにwavファイルを入れておく。
attachSoundは音がローカルライブラリに無いとだめみたいだから、
この場合はindex.swfのライブラリ内に、ということになるみたい。
実際、indexにwavを移した後soundのwavを消しても、index.swfを開いたら音は鳴った。
swfをいくつ読み込むのか知らないけど、
各swfでライブラリを管理したいなら、
>>107 が言うように読み込むswfを共有ライブラリとして
index.swf内に書き出す必要があるんじゃないか?
132 :
130 :05/02/19 19:50:31 ID:XEX0xBzB
とりあえず自分で発見出来てしまいました。
on (release) {
getURL("JavaScript:newwin=window.open('a.html','sample',
'width=300,height=300,');void(0);");
}
で
>>130 で質問した方法が可能なようです。
これから試してみます。
もし他のもっと確実な方法をご存知の方がいたら、
ぜひ教えてください。失礼します。
133 :
130 :05/02/19 20:06:20 ID:XEX0xBzB
連レスすいません。
どうやら
>>132 の方法はMXに対応しており5では無理ぽでした。
実践してから書き込むべきでしたスミマセンっ
>>133 マジレスすると、タブブラウザのユーザーも結構いるからそういう独立新ウィンドウはオススメしない。
インスタンス名ってひょっとして同じ名前を付けちゃいけないんですか?
そりゃもう
137 :
125 :05/02/20 02:49:14 ID:eIMyITch
皆さんレス有難う御座います。
>>126 やはり毎回cntが0になっていたのか…
何かいい対処法ってありそうですか?
>>127 >>128 有難う御座います。
onClipEvent(load)に変更してみます。
138 :
126 :05/02/20 04:40:40 ID:eYTmUG8p
>>137 onClipEvent(load)で一度きりの動作
enterFrameで毎回の動作、と書き換えるの。
変数の宣言、関数の定義を前者で一度やっておく。
ちなみにenterFrameにする必要ないんじゃないのかな。
this.aaa=のとこも関数内に含めてしまっていいし。
あとgoto~じゃなく、MovieClip.goto~推奨。
>>136 どおりで挙動がおかしかったわけだ。
ありがとう
平日 = 社会人困ったちゃん 休日 = 素人困ったちゃん で賑わうインターネットですね。ここは。
141 :
101 :05/02/20 17:32:27 ID:/SxcUz57
すみません、今FLASH自体触れない環境なんですが 上の>116の解釈で間違っていないかどうかどなたか教えて頂けないでしょうかorz 「MC自体をボタンにする」というのも、ぐぐっても どういう行程でそうするのか分からず終いで焦ってます…
「ボタンムービークリップ」でぐぐると出てくるよ、多分。
>>141 互いの判定(ヒット領域)はどこ?
_root.MC1.b1 _root.MC1.b1
↑ここ? ↑ここ?
前者ならMC1クリックしてASをインスタンスに記述
後者ならMC1編集画面でb1をクリックして以下同文
前者なら_root.MC2.enabledを弄って
後者なら_root.MC2.b1.enabledを弄る
144 :
101 :05/02/20 19:03:31 ID:/SxcUz57
「ボタンムービークリップ」 で調べたら出てきました、ありがとうございます。 自宅ではFLASH5を使っており、今回初めてMX2004を職場で使っているので お恥ずかしいのですが、ボタンムービークリップの概念自体知りませんでした…。 >143さん ヒット領域の事は正直あまり考えていませんでした…。 enabledをAS辞書で調べた際、「ムービー内でボタン様の物について操作する」 といった感じで書かれていたので、_root.MC2等と指定しておけば MC内のボタンについては全部効果があるのかと思ってたんです…… 【】がMC、●▲■(▲がb1)がボタンだとしたら 【 ● ▲ ■ 】こんな状態で色々ボタンが入っている状態で それぞれのボタンにヒット領域(マウスが反応する部分)があります 本当にアホでご迷惑おかけします…これだと、●▲■ボタンそれぞれがヒット領域になって (_root.MC1.b1の「b1」がヒット領域)、 MC1編集画面でb1をクリック、で_root.MC2.b1.enabled = 以降true;など入力 で大丈夫でしょうか… 職場に行かないとMX2004が弄れないので、確認出来ず申し訳ないのですが……
>>144 それでいいよ。
MC>button入れ子の場合
MCにイベントハンドラ定義したら子の方は有効でない
だからMC1にしてもMC2にしても▲(b1)のみに記述すればいい。
パスに気をつけよう
やっとわかった。
buttonの方に「MCx.enabled=false」と記述していたのね。
そうじゃなく、「MCx.b1.enabled=false」としないと無効化できないよ
146 :
Now_loading...774KB :05/02/20 22:52:29 ID:h4hy05Sj
perlの変数をflashに渡す方法を教えてください。(テキスト以外で) $hoge(perl)の数値(文字列)をそのまま hoge(flash)に。 よろしくお願いしますm(__)m
>>146 printをSTDOUTモードで渡す(cgi側)
loadVarsクラスで受信する(flash側)
sendAndloadとか一つで終わらせレル
148 :
Now_loading...774KB :05/02/20 23:11:42 ID:h4hy05Sj
助かりました。勉強して試してみようと思います。 環境変数を &でsplitして抽出するようなやり方ですね。 ありがとうございました~
>>148 そう、cgi側はそれでまとめてログ保存なりしたあと
printで一括送信。
flash側はその間待機しててくれます
150 :
Now_loading...774KB :05/02/20 23:23:46 ID:h4hy05Sj
簡潔でわかりやすいレスいただきまして感謝です。 また困ったことがあれば書き込むかもしれませんが、宜しくお願いします。 では、早速勉強してきまっす!
151 :
Now_loading...774KB :05/02/20 23:48:06 ID:kxnT6nVo
FlashMX、OSはW2kです 時間をデジタル表示したいのですが表示する時間が少し変わっています ある決まった日時からの経過時間を表示したいのです 例えば2005年の1月1日からの経過時間(日だけでOK)ということです ググった限りこんな便利なスクリプトはないっぽいんですが・・・ やはり普通に時間を取得して計算させるしかないんですか? 教えてください神様
>>151 (現在のミリ秒-2005年1月1日の指定時間のミリ秒)を時間に変換汁!
FLASH内の画面を揺らしたいのですがASで可能なんでしょうか? よろしければ誰か教えてください
漠然としすぎ・・・。
おはつです。 解決アドバイスよろしくおねがいしますm(_ _)m 変数をダイナミックテキストボックスに表示しようとしているのですが、 逆にそのテキストにあらかじめ入力されている文字列が、変数のほうに代入されてしまいます。 いつもこうなってしまうわけではないんですが、うまくいく場合とそうでない場合の違いがわかりません。 具体的には _global.txtTitle = String("Gallery"); としておいて 後に表示されるダイナミックテキストエリアに 「タイトル」と入力しておき、変数にtxtTitleと記述しています。 そうすると、テキストエリアに"Gallery"と入力されず、 逆に変数"txtTitle"の中身が「ガイトル」という文字列に変わってしまいます。 txtTitle = Gallery になってしまうんです。 FlashMX2004、Actionscript2.0で書いてます。よろしくです。 ちなみに関連質問なんですが、このダイナミックテキストボックスを配置したMCを on ClipEvent(enterFrame) { this.alpha -=20; } と徐々に透明度を下げていきたいのですが、 MC自体は透明化されていのにそのMC上のテキストエリアだけ透明度が変わらないんです。 これはFlashの仕様でしょうか??
157 :
156 :05/02/21 17:52:55 ID:EGhhz8P3
上の質問 とりあえずテキストボックスの変数の値に _parent.txtTitle とパスも入れて指定したらうまくいきましたm(_ _)m
158 :
156 :05/02/21 18:02:55 ID:EGhhz8P3
自己レス御免。 ダイナミックテキストを透明化する件についても、 155さんのリンク先にいったらすぐ答えが見つかりました。 155さんどうもですm(_ _)m
ガイトルっつうのがよくわからんけど、バグなのかな? 下は埋めこみにしてる?
160 :
156 :05/02/21 18:05:39 ID:EGhhz8P3
あぁー ガイトルっつーのはタイプミスでした^^;
161 :
Now_loading...774KB :05/02/21 22:27:30 ID:Nq/kgcZ7
WinXPSP1a FlashMX2004Pro です。 System.setClipboard("文字"); で文字をクリップボードへコピーできるのは知ってますが、 これを使って改行の混ざった文字をコピーしてからメモ帳にペーストすると 改行が消えてしまっているようです。 改行が入ったままコピーするにはどうしたらいいのでしょう。
\n
>>1 改行コード(\r)をwin用の改行コード(\r\n)に置きかえれ
System.setClipboard(textField.text.split("\r").join("\r\n"))
>>163 改行コードを置き換えればよかったんですね。
解決しました。ありがとうございました。
私は1じゃないです。
FLASHの面白いゲームPart23の1ですが
switch/caseで聞きたいのですが 配列を使う場合カッコはつけるのでしょうか? つけない、()、[]、とためしてみましたが、 どうも正常に作動していないようなんです。 switch/caseでの配列使用はどうすればいいのでしょうか checkFlg = [true, false] switch (checkFlg) { case true, false : trace("case1"); break; }case false, true : trace("case2"); break; }
>>165 checkFlg = [true,false];
if ( checkFlg == true,false ) {
trace ("case1") }
あれ・・・???
167 :
165 :05/02/22 16:32:16 ID:Hh27ZBSM
>>166 上の例ですとたしかにif文でもいいのですが、
実際はcaseの数も多く、ところどころbreakが外してあったりして、
switchの方が使いやすいのでswitchの場合で知りたいのですが、
もし、ご存じでしたら教えていただけますでしょうか。お願いします。
配列で扱わないでtoStringで文字列として出力して比較すれば?
>>167 そうじゃなくて、
>>166 の文法に何かおかしいなー?って思う点はないかな。
>>165 の記述で言うならば、配列checkFlg内の順序を監査・比較して、ケースとして実行させたいんだよね。
とりあえず配列内から要素を取り出すって部分から見直すといいかも。
多対多の比較を一つでやろうとしてる。意味なし。
171 :
165 :05/02/22 17:31:14 ID:Hh27ZBSM
>>168-170 ありがとうございます。
みなさんの回答をいろいろ混ぜてできました。
smcpHitFlgTxt = "";
for (i=0; i<=8; i++) {
if (smcpHitFlg[i] == true) {
smcpHitFlgTxt += "1";
}else{
smcpHitFlgTxt += "0";
}
}
switch (smcpHitFlgTxt) {
case "100000000" :
mapChipMC.gotoAndStop("v1");
break;
case "110000000" :
mapChipMC.gotoAndStop("v1l");
break;
.........
}
そう言う荒業嫌いじゃないぞ。俺。
switchって処理重くね?
なんでぇ?
175 :
97 :05/02/22 20:29:45 ID:DpJYrg+l
176 :
Now_loading...774KB :05/02/22 23:58:40 ID:yqapzHhv
3DのScriptを組んでて影のつけ方の計算に躓いています。 どこか参考になるサイト等は無いでしょうか?
なんでFlashで3Dをやろうとするんだ。DirectXスレとかで聞いてみれば? Flashのactionscriptってそういうことするもんじゃないよう。もっと幾何数学とか勉強すればいいと思うよ。
ユークリッドもおkっしょ。
Math特化してるし。
>>176 計算でいけないかい?
ただボカシとかの話になると力技になって処理重くなる悪寒
8ballまで待て
ブロック崩しなどの ボールが壁にぶつかって跳ね返るような動きはどのような記述でできるのでしょうか。 どなたか教えてください。
変数=式 プロパティ=式
>>180 こことか参照
ttp://ponk.jp/flash_game/index.php?page=3 onClipEvent (load) {
mx = 1;//x方向に移動する速さ
my = 1;//y方向に移動する速さ
top = _width/2;//画面上の壁
bottom = Stage.height-top;//画面下の壁
left = _height/2;//画面左の壁
right = Stage.width-left;//画面右の壁
}
onClipEvent (enterFrame) {
_x += mx;//横に移動させる
_y += my;//縦に移動させる
if (_x<left || _x>right) mx *= -1;//左か右の壁に当たったらx方向に移動する速さを反転する
if (_y<top || _y>bottom) my *= -1;//上か下の壁に当たったらy方向に移動する速さを反転する
}
FlashMX2004を使っておりまつ。 早速ですが、Flash上で複数のSWFファイル(a.swf、b.swf、c.swf)を同時に印刷したいのですが、どうすればいいのでしょうか。 通常であればprint関数*3でいいのですが、それだと印刷ダイアログが3つでてくるので。 できれば1つのダイアログ表示で3ファイルを印刷したいのですが、どうすればよいでしょうか。
無理。 印刷用に3つのムービー読み込むムービーでも作ればいけるかも?
185 :
183 :05/02/24 15:48:03 ID:Uf2t+hFk
186 :
Now_loading...774KB :05/02/24 19:19:17 ID:peu/9/Sb
外部画像を取得してサムネイルを一覧表示させようとしています。 forの繰り返し処理とattachMovieで画像ロード用のMCを等間隔に配置していくのですが、 任意の数の倍数で一段下げたいと思います。 通常はMCのX座標は100ピクセルずつ横にずれていくのですが、これでは横に延々と並んでしまうので、 例えば5の倍数の時のみY座標に100ピクセル追加して、X座標を0に初期化したいと思います。 ■■■■■ ■■■■■ ■■■■■ ■■■.......... そうすればこんな感じで0~4、5~9、10~14....と改行させて配置できるはずなんですが、 任意の数値の倍数を求めるにはどうすればいいでしょうか? FlashMX2004、Actionscript2.0です。 よろしくお願いしますm(_ _)m
forの入れ子 for(num_i = 0; num_i < x; num_i++ ){ for(num_j = 0; num_j < 5; num_j++ ){ 横に配列される } 次の段にいく ただしxは段数とします }
Math.floor(i/5)
189 :
186 :05/02/24 19:33:23 ID:peu/9/Sb
FlashMXで動作可能なBBSで中身改良可能なんて都合のいい 代物はないですよね。 (ノω`)
スレ違い
ごめん、いってる意味わからない。 フリーcgi弄ってguiをflashってだけなら互いの出力いじればなんでも可能
ググればどっかにあったきがする。でも、flashでやる意味ないしな。。
質問です。 MCをクリックしたら変数scoreに+1して フレーム36にジャンプするようにしたいのですが on(press){ _root.score += 1; gotoAndPlay(36); } と記述したところgotoAndPlayが働きませんでした。 かなり初歩のミスなのでしょうが よろしければお力添えをお願いします。
_root.gotoAndPlay(36); にしてみ
mcのthisは、まんま自分参照 buttonのthisは、親参照 省略形は、thisと見なされるけど 本来省略すべきではない。
//as = gotoAndPlay(n)記述場所 _root.mc1(as) =>mc1 _root.btn1(as) =>_root _root.mc1.mc2(as) =>mc2 _root.mc1.btn2(as) =>_root.mc1 >196 gotoAndPlay()はMC.gotoAndPlay()とは別物だよ。
シットルガナ 説明し難いだろ 単独のアクションなんじゃらって
>194が誤解すると、と思ったので補足までに書いてみました。 気に触ったようでしたらごめんさい
いえいえ別に気にしてませんけど mx2004の時代に使用すべきでない単独のアクションとして話しをするより thisを省略したものとして話したほうがわかり良いかなと思いまして つっけんどうにしちゃって、こちらこそゴメンなさい
>>182 御返答有難う御座います
試行してみます
202 :
Now_loading...774KB :05/02/25 23:00:35 ID:pzznqgv1
MX2004pro+WinXPです。 現在FLASHLite1.1で携帯用に作成してるんですが ルートに配置したMC内の最終フレームに _root.gotoAndPlay(3); とMC内からルートへのgotoAndPlayを やってみましたがFLASH4では無理なんですね。 【/】や【:】を使うまでは解ったのですが記述方法が解りません。 ググり方が下手なのか見つかりませんでした。 どなたか宜しくお願いします。
flashliteって4jと同等なんだ? 作ったことなかったから、シラナンダ
あれ・・・ID継続中?
日付が変わった瞬間に自演するのがいるから、数分だけ変わらなくなった。
自演したって仕方ないと思うけど、そんなことなら、 ランダムに12時間くらい取り出して、変更時刻変えなきゃあんま意味ないだろ?
まろゆきにそう言えばいいじゃんよ。
>>202 / が_root、 ../ は_parent。
>>204 同じとこも多いけど、独特なのもある。端末独特なのもあるから
きちんと資料揃えたほうがいいっつー状態。
ボタンの領域に入った時、指カーソルにしない方法を教えてください。 (ボタンの場所を隠す) 指カーソル 等でググったのですが方法の説明が見つけられなかったので、どうかよろしくお願いします。
mx以降ならuseHandCursor。ヘルプ嫁。
たぶん、今度はTABキーで見つかるのをなんとかしたいって言い出すんだろうなぁ。
よし、じゃあ先に書いておくか //個別に MC._focusrect = false; //全部 on (keyPress "<Tab>"){ ; }
214 :
194 :05/02/26 14:25:19 ID:BrMH6JmR
>>195 >>196 >>197 解決しました、ありがとうございます。
そしてまた問題が出たのですが
MCに打ったASで
「xフレーム後(もしくはx秒後)に変数aをー1」
というのは可能でしょうか?
幾通りも考えられるけど this.onEnterframe=function(){ if(tekito_flag){ if(++tekito_flag==xframe){ a--; delete this.onEnterframe; } }else tekito_flag = 1; };
216 :
214 :05/02/27 13:15:43 ID:tBwm/huR
>>215 教えてもらって申し訳ないのですが
そのスクリプトの意味がほとんど分かりません…
未熟と言われれば全くその通りなのですが
もしよろしければ解説してくださると助かります。
setInterval(hoge(),1000); function hoge();{ a--; }
>>216 順序良く基本から勉強しないと無理なのでは?
スキーの初心者がモーグルとか無理でしょ。
>>216 分かりやすいスクリプトで書いてみる。
foo=0;
bar=0;
this.onEnterframe = function(){
foo++;
if(foo==10){
foo=0;
bar++;
}
220 :
219 :05/02/27 16:16:47 ID:dJLK+l6A
記述みす foo=0; bar=0; this.onEnterframe = function(){ foo++; if(foo==10){ foo=0; bar++; } }
221 :
214 :05/02/27 16:51:47 ID:tBwm/huR
>>217 >>219 わざわざありがとうございます。
何度か試したのですが
>>218 氏の仰るとおり
今の技量では記述文の理解すら出来ませんでした。
アドバイスを生かせずすみませんでした。
>>221 せっかくだから覚えて行くと良いと思うよ。
詳しく説明してみるね。
foo=0; //変数の宣言。
bar=0; //変数の宣言。
this.onEnterframe = function(){ //関数の定義。毎フレーム実行されるよ。って意味
foo++ // fooって変数に+1します。;
if(foo==10){ // もし foo って変数が 10 ならば
foo=0; // foo を 0に戻して
bar++; // bar に 1を足す
}
}
毎フレームの挙動はこんな感じ
foo : 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 ・・・・
bar : 0 1 2
foo : 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 ・・・・ bar : 0 1 2 ズレ修正
224 :
214 :05/02/27 18:01:30 ID:tBwm/huR
>>222 何度もすみません、ようやく理解できました。
…が、不覚にも再び問題に直面してしまいました。
「MCがクリックされない限り一定時間毎に変数_root.lifeを-1」
という動作を多数のMCに組み込んで同時に行う
という目標はお蔭様で達成する事ができたのですが、
「クリックしたら変数_root.scoreに+1してMCを消去」
という動作もするように記述したつもりが後者の動作が
変数加算、MC消去とも動かなくなってしまいました。
foo=0; //変数の宣言。
this.onEnterframe = function(){ //関数の定義。毎フレーム実行されるよ。って意味
foo++ // fooって変数に+1します。;
if(foo==10){ // もし foo って変数が 10 ならば
foo=0; // foo を 0に戻して
_root.life --; // bar に 1を足す
}
}
on(press){
_root.score += 1;
this.removeMovieClip;
}
元はthis.removeMovieClip;ではなく
gotoAndPlay(36);と35フレーム目のフレームアクションgotoAndPlay(10);
を合わせてループと、クリックしたら次の動作、としていたのですが
this.removeMovieClip;にすると_root.score += 1;も動作しなくなってしまいました。
この原因はremoveMovieClip;の使い方の間違いでしょうか?
まぁ・・・あれだ。 removeMovieClip は複製したものじゃ無いと消せないって事は覚えておこか。 見たところゲームだよね。 例えば on(press) で座標をステージ外に飛ばすとかさ。 色々と方法はあると思う。
キーを入力したらムービークリップAが拡大、Bが縮小するにはどうしたらよいですか?
>>224 _xscale=0とか_alpha=0にすると見えなくできる方法もある
>>226 //スクリプトを_level0に書き込む
//_level0にインスタンス名aとbのムービークリップの配置を確認
//スペースキーを押している間aを拡大&bを縮小
this.onEnterFrame = function() {
if (Key.isDown(Key.SPACE)) {
_root.a._xscale++;
_root.a._yscale = _root.a._xscale;
_root.b._xscale--;
_root.b._yscale = _root.b._xscale;
}
};
macのMXです。 フレームをストップさせて数秒後に再生させたいんですが どのようなスクリプトがありますでしょうか? TIME = getTimer(); if (Number(TIME)>20000) { gotoAndPlay(10); } これでやってみたのですが上手くいきませんでした。 よろしくお願いします。
229 :
Now_loading...774KB :05/02/28 20:04:00 ID:4ioeA9fN
>>228 function onEnterFrame(){
if(getTimer()>20000){
mc.gotoAndPlay(10);
}
}
か、
setInterval();
かなぁ
>>229 ありがとうございます。
参考にさせていただきます。
onClipEvent (load) { _root.stop(); } onClipEvent (enterFrame) { // すべて読み込んだら2フレーム目へ if (100 == Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100)) { _root.gotoAndPlay(2); } } ↑このロード用のASを1コマ目のムービークリップシンボルに貼り付けると ↓のようなエラーが出るんですがどこが悪いのでしょうか? シーン = シーン 1, レイヤー = レイヤー 1, フレーム = 1 : 行 1:クリップイベントはムービークリップインスタンスでのみ使用可能です。 onClipEvent (load) { シーン = シーン 1, レイヤー = レイヤー 1, フレーム = 1 : 行 4:クリップイベントはムービークリップインスタンスでのみ使用可能です。 onClipEvent (enterFrame) {
232 :
Now_loading...774KB :05/02/28 21:54:00 ID:xCOnUiHx
>>231 onClipEventはタイムラインでは使えないので、
ステージに配置させたムービークリップをクリックして
アクションウィンドウにそれを貼り付ければ大丈夫だよ。
>>229 this.onEnterFrame = function() {}
じゃないの?
235 :
234 :05/03/01 06:11:37 ID:xXSvf2JF
ビルトイン関数なのか。すまん。
236 :
Now_loading...774KB :05/03/01 12:24:41 ID:ceH1JQXa
gotoAndPlayで別シーンに飛ばしたいのですが、その別シーンを変数であらわすことって 出来ないんですかね。 また、別のシーンのラベル名も変数で表すことが出来ないっぽいんですが・・・ どなたかご存知ないですか?
ActionScriptのスレでシーン分けを使っている人は存在しないかも・・・
238 :
236 :05/03/01 12:32:19 ID:ceH1JQXa
新しいもの好きの人たちだと思うから、fla4の技術は使っていないんじゃないかと。 liteやっている人なら大丈夫かな。
240 :
236 :05/03/01 12:42:44 ID:ceH1JQXa
>>239 シーン分けってfla4の技術だったんスか・・・。
どうもご親切にありがとうございます。おかげで勉強になりますた。
241 :
214 :05/03/01 14:11:11 ID:IUmK8f/N
>>225 遅くなりました。
何度もありがとうございます
形にはなりつつあるので色々とやってみますです。
クリックしたらその選択に応じて画面飛ばせばいいだけだろ
あー、初歩の中の初歩 なんですが。 ActionScript って何なんですか? 簡単に教えてください。
アクションさせる為のスクリプトです
アクションのスクリプト
うほ
ハクションの大魔王
あるフレームに来た時フレームアクションで フレーム2、40、78、116のいずれかにランダムで飛ばし、 変数_root.scoreが10の時にはフレーム115に飛ばすようにしたいのですが 以下のスクリプトだとシンタクッスエラーは無いのですが そのように動作してくれません。 どうすればよいでしょうか? _root.gg; if(_root.score==10){ gotoAndPlay(155); } _root.gg = Math.random(3); if(_root.gg == 0){ gotoAndPlay(2); } else if(_root.gg==1){ gotoAndPlay(40); } else if(_root.gg==2){ gotoAndPlay(78); } else if(_root.gg==3){ gotoAndPlay(116); }
>>249 Math.random についてヘルプを参照しましょう。
それから、gotoAndPlayは他の言語のgotoとは全く別物で、 処理を即移行させるものではないので if(_root.score==10){ gotoAndPlay(155); } のあとも else if が必要です。
252 :
242 :05/03/01 21:46:33 ID:LvA17qGH
>>243 その画面に飛ぶだけでなく選択したキャラがでてくるようにしたいのですが
飛ばせるだけのASの書き方もわかりません。初心者スレで聞くべきだったでしょうか
格闘ゲームってのは良く分からんのだけど、 MCに表示させたい奴を1フレーム毎に置いて、選択されたって時に変数に保存→MCに反映で良いんじゃないの?
>>249 こうだな
if(_root.gg == 0)gotoAndStop(2);
_root.gg = Math.floor(Math.random()*4)
else if(_root.gg == 1)gotoAndStop(40);
else if(_root.gg == 2)gotoAndStop(78);
else gotoAndStop(116);
if(_root.score==10)gotoAndStop(115);
1行目のroot.gg;は必要ありません
Math.randomの使いかたが間違ってますこことか参照
http://hakuhin.hp.infoseek.co.jp/main/as/random.html
if(_root.score==10){gotoAndPlay(155);}は
一番下に書くと変数_root.scoreが10のときにフレーム115に飛んでくれます
一番上に書いてあると2,40,78,116にしか飛んでくれません
if文で処理ブロックが1行の場合、{}を省略できます
http://www.ochaden.net/technology/flash/22.html
コピペ乙
>>249 依頼文とスクルプトが矛盾してて115か155わかりませなかったす
_root.gg = Math.floor(Math.random()*4)
if(_root.gg == 0)gotoAndStop(2);
else if(_root.gg == 1)gotoAndStop(40);
else if(_root.gg == 2)gotoAndStop(78);
else gotoAndStop(116);
if(_root.score==10)gotoAndStop(155);
>>252 まずチュートリアルとか参考書とかやったほうがいいんじゃね
ここで質問して答え待つより早いこともある
>>252 キャラクター表示させる枠をMCにする
そのMCの
1フレーム目:何も無し
2フレーム目:キャラクター1の絵
3フレーム目:キャラクター2の絵
と言う風にやって
キャラセレクトのボタンに
たとえば、キャラクター1のボタンだったら
押したときに、
_root.キャラ表示枠.gotoAndStop(2);
とか書けばいいんじゃない?
分かりにくい説明すまんこ
259 :
Now_loading...774KB :05/03/02 11:47:49 ID:Z1EyOzyM
>>621 まぁ、確かにその考えは分かる。
けどそれはあくまで雇う側の言い分かと思うが・・・。
そんなの、JavaScript出来る人って募集すれば良かったんじゃないのかね?
勉強不足で片付けるような問題じゃないと思う。
ECMAに準拠してるってだけで、同じ言語な訳無かろうと。
Flashからスクリプティングを覚えた人もいれば、JScからFlashに移行した人もいる。
オマイの言い分だと、
「スペイン語出来るって採用したのに、同じラテン語源で近いイタリア語が出来ないのは努力不足。ウンコ」
って感じだよ。
似てても違う言葉だろ。境界線の垣根は低いかもしれんが、使い道も特化部分も違う。
そして、努力不足というならば、そう言う奴を採用したオマイも能力不足って事だ。
グボアァ・・・こんな所に>< 誤爆した挙句にageてしまって申し訳ありませんです。
>>259 JSも出来るからニートな漏れを採用してください
ニートは働いたら負けだ。無職とは違うのだよ、無職とは。
ニートってスキルあるの?
寄生スキルだろ
FlashMX(win)で on (KeyPress "~") でctrlキーを認識させることは出来ないのでしょうか? ヘルプを読む限りではキーコードを記述すれば認識できるようなことが 書いてあるのですが… on (KeyPress (17) ) や on (KeyPress(Key.CONTROL)) とかやってみたけどダメでした。 on (KeyPress "17")だと1に反応してしまうようです。 詳しい方教えてください。
>>265 その書式だと、alt shift ctrl あたりは無理みたい。
ボタンではなく、MCの方でやるしかないと思う。
267 :
km :05/03/04 12:31:56 ID:YHyh+Jwt
pointっていうムービークリップに番号をつけてそれをインスタンス名として this.attachMovie("point",番号~,) みたいな感じでアタッチしたんですけど 各インスタンスは自由にコントロールできるんでしょうか? 例えば1~5までのインスタンス名のついたインスタンスのうち4を動かす にはどうすればいいのでしょう? point[4].move() ってできれば簡単なんですけど..
>>267 _root["point"+n].hoge();
とかすればいい
が、配列につっこんだほうがいいかもわからん
hoge = new Array();
hoge[n] = this.attachMovie("point","point"+n,n);
とか
配列を物の名前にする考え方を理解できません
/* a2_mc のスクリプト*/ onClipEvent (load) { hoge = this._name.charAt(1); trace(hoge); } /*出力結果*/ 2 って強烈なスクリプトを見たことがある・・・。 あれは衝撃的だった。いろんな意味で。
271 :
km :05/03/04 20:06:26 ID:SswNLrOx
人に見せんのなら配列の名前なんてどうでもいいな。
>>270 いろんな意味でFlash的なASで違和感あるだろうけど
使えなくはないと思うぜ。
俺としては
function hoge(functionName, arg){
this[functionName](arg);
}
こういうコードとかが衝撃的だったが。
>>275 なんだそれ・・・。
引数に関数名を配列で入れ子って事?
2行のスクリプトで凄まじい絡み合いが感じられるね。
いやさ、
>>270 の奴ね。なんで衝撃的だったかと言うと、
MCの名前に振った数字で制御してるってのが衝撃でさ。
onClipEvent(enterFrame){
this._x+=this._name.charAt(1);
}
とか。個人的には強引な方法も好きだけど、そんな使い方を考えもしてなかったし、
そこから色んなスクリプトに派生できたのは大きかったけどね。
>>270 は漏れは普通に使ってたなぁ('A`)
FLASHってどうやってインスタンスを使うかとか人によって自己流があるだろうからな。
>>275 って衝撃的以前に何がおきてるんだ?
this[functionName](arg); これはあれだな、関数をthisの変数として文字列で呼び出して()で実行かけてるんだな。 個人的にはこういうコードもなるほどとは思うが軽く違和感 onRelease = onReleaseOutside = function (){ // } ついでに使い道もないがこんなのも動作 this[" "] = function (){ return "hoge"; } trace(this[" "]()); // hoge
交換スレみたくなってきたね。 俺も変なコード考えよっと。
すまん、こういう話は交換スレだな。 回答の邪魔になるな。
ちわす 外部テキストで設定した変数を配列に入れたいのですが、 やはり一つの変数からsplit();で割って配列に格納する以外の方法は無いでしょうか。 それぞれが長文だったりURLだったりするので一列に記入するのはわかり難く、 かといって改行コードで切るとOS間での互換性が・・・。 外部テキストに &s_Sum=5& &title_str1=あいうえお......& &title_str2=かきくけこ& &title_str3=さしすせそ& &title_str4=たちつてと& &title_str5=なにぬねの& と記述しておき、それを読み込んで title_array = new Array(); for (i=1 ; i <=s_Sum ; i++) { title_array[i] = String(title_str+i) ←ここが× }; てな感じにしたら当然のように失敗しました。 でもこういう感じでActionscriptに詳しくない人でも外部ファイルを書き直しやすいように作りたいのですが、 なにかいいほうほうは無いものでしょうか。 よろしくお願いします。
this["title_str"+i]
>>282 まず使用ソフトウェアとOSを書きなさい
外部テキストの あいうえおかきくけこ とかをダブルクォテーションマークではさんでみるとか
String(title_str+i) をString(eval("titel"+i));にしてみるとか
それと、なんで当然のように失敗したってことがわかるのかを問い詰めたい
285 :
282 :05/03/05 17:58:43 ID:JmjVkyr3
すいません、WINXP、MX2004、Actionscript2.0です。
当然のように失敗したと思ったのは、
title_str+iだと、
実際にはtitle_strという変数は無いのにそれ自体で変数として認識し、
その中身を取得しようとするはずなので失敗したのだと思いました。
>>283 >>284 どうもありがとうございます。
教えていただいた方法、さっそく試してみます。
286 :
282 :05/03/05 19:44:39 ID:JmjVkyr3
ありがとうございました。無事やりたかったことができましたm(_ _)m eval()っていままで使ったことがなかったのですが、便利ですね。
初心者なんですが・・・ winXPでFlashMX使ってます。 例えば、常にカーソルに追従して動き回る オブジェクトがあるとします。(これはわかります) で、ボタンを押すとこの動作を止めて、 またボタンを押すとストップしていた場所から同じ動作が復活する。 これをやりたいのですが、まったく見当がつきません。 「スクリプトの作用を一時的にストップして、再び復活させる」 という具合に考えるのでしょうか? なんだか説明からして稚拙で申し訳ないのですが、 どなたかよろしくお願いします。
>>287 ボタンを押した時に、関数をnullとかにしておけばいい。
もっかい押したらカーソル追従の関数を入れる。
289 :
287 :05/03/06 02:40:21 ID:SbAI/NZ0
>>288 ありがとうございます。
がんばってやって見ます!
as2unitでTestSuite使っている人いる? 使い方がよくわからないんだけど。
SWFファイル単体では正常に動作するのに、 パブリッシュしたHTMLの上ではボタンアクションなどがへんな動作をしてしまいます。 たとえば、ムービークリップをロードするアクションなのに、 なぜか_rootの1フレーム目にもどってストップしたりと全然関係ない動きです。 SWFファイルだけアップするわけにもいかないので、 HTMLをフレーム分割して片側のフレームのサイズを"0"にし、 もう片側のフレームにSWFを読み込んでHTMLに埋め込んだかのようにしました。 幸いムービーはブラウザいっぱいに表示したかったのでこの方法で問題ないのですが、 いったいこの原因はなんでしょうか。 MX2004、Actionscript2.0、WindowsXP+SP1の環境で、パブリッシュ設定もFlashPlayer7の設定です。 外部ファイルとしてどこにでもおけるように、スクリプトはすべて相対パスで書いています。
292 :
291 :05/03/07 16:44:25 ID:FdGYTDcy
>外部ファイルとしてどこにでもおけるように、スクリプトはすべて相対パスで書いています。 ↓ 外部SWFファイルとしてほかのSWFのステージに読み込んでも動作するように、すべて相対パスで書いています。 でした。なんかまぎらわしいかきかたでした。 よろしくお願いします。
>>291 >SWFファイルだけアップするわけにもいかないので、
>HTMLをフレーム分割して片側のフレームのサイズを"0"にし、
>もう片側のフレームにSWFを読み込んでHTMLに埋め込んだかのようにしました。
ここらへんが怪しいことやっているような。
なんでタグで埋め込まないんだ?
違うswf表示してるんじゃない?
295 :
21 :05/03/07 18:23:25 ID:B10SrWpx
例えば自分でTestというクラスを定義します。 function Test(){ } このクラスをnewすると var test = new Test(); となるわけですが、ここで testインスタンスから、「Test」という文字列を取得することは できますでしょうか? Javaで書くと、test.getClass().getName()に相当する操作です。 現在MXの環境で作っています。ご存知の方教えて下さい。
296 :
291 :05/03/07 20:44:48 ID:FdGYTDcy
>>293 いや、SWF単体では動くのに、タグでHTMLに埋め込むとなぜか正常動作しないからです。
いったいなぜなのか、さっぱりわかりません。
どなたかそういう事例ご存知の方いませんでしょうか?
297 :
291 :05/03/07 20:46:33 ID:FdGYTDcy
↑291ですm(_ _)m
charAtとtextColorを使って、特定のテキストフィールドを一文字ずつ色を変えていきたいのですが、それは可能でしょうか? とりあえず自分のチャレンジではテキストフィールド全体の色を変えることしか出来なかった・・・
>298 テキストフィールドはHTMLでレンダリングできるから、 一文字ずつFontタグとかで括っていたらOKでないかい?
>>291 正常動作しない最小環境を作って再現してみるとか。swf晒す
HTMLの場合、プラグインのバージョン違いってことも考えられるが。
>>298 可能。テキストフィールドオブジェクト詳しく調べれ
>>296 swfとhtmlのディレクトリが違うならパスが間違ってるんだろ。
どこまでが成功しているか問題を切り分けて考えなきゃ
これから先何度も発生するトラブルには対処できないぞ。
>>295 >例えば自分でTestというクラスを定義します。
>function Test(){
>}
これはクラスじゃないような・・・
303 :
295 :05/03/07 21:21:32 ID:B10SrWpx
>>300 テキストフィールドで出来るやり方キボンヌ
>>303 で、実際どうなの?2004なので検証できないけど。
たぶん、大文字小文字の区別の問題になるとおもわれるが。
>>298 TextField.setTextFormat() だね。
>>291 本当にHTMLで指定しているswfは意図したもの?objectとembedタグ内のファイル名を確認してみなっせ。
>>295 用意されてないから自分で実装しなっせ。
Test.prototype.getName = function(){return "Test";}
306 :
291 :05/03/07 21:56:55 ID:FdGYTDcy
原因はわからないのですがとりあえず問題を限定できました。 ムービーの2フレーム目のボタンアクションで呼び出す関数に gotoAndPlay(5) と記述してあり、5フレーム目には stop(); が記述してあります。 5フレーム目でストップしたら条件によってムービークリップを表示するのですが SWF単体だと5フレーム目のstop();でストップするのに、 HTMLにタグで埋め込むと5フレーム目でとまらず、ループして1フレーム目に戻ってきてしまいました。 最初のボタンで呼び出される関数に gotoAndStop(5) と書いていればよかっただけなのですが、プレビューでは思い通りに動作してしまっていたので気づきませんでした。 HTMLに埋め込んだ場合と単体SWFの場合で動作が変わってしまうものなんですかね。
307 :
298 :05/03/07 22:00:45 ID:gCLmaTw/
>305 でけたでけたよ!㌧クス! こんな感じでできた↓ i ++; txtfmt = new TextFormat(); txtfmt.color = 0xFF1008; txtfld.setTextFormat(0,i,txtfmt);
Windows XP MX2004 Actionscript2.0 クリップアクションを書き換えるだけで、色々な場面で使えるボタンを作ろうと、 テストしていたのですが、詰まってしまったので質問させて下さい。 ①適当な図形のMCを作り1フレームと2フレームで図形の色を塗りわけ、 それぞれのフレームアクションに stop(); ②レイヤーを追加してそのタイムラインに this.onRollOver = function() { //ロールオーバーの処理 this.onEnterFrame = function () { this.gotoAndStop(2); } }; this.onRollOut = function() { //ロールアウトの処理 this.onEnterFrame = function () { this.gotoAndStop(1); } }; this.onRelease = function() { //リリースの処理、クリップアクションのfumctionを実行 this.onEnterFrame = idou //クリップアクション }; ③MCのクリップアクション //ボタンクをリックしたら、ボタンをx方向へ+2移動 onClipEvent(enterFrame){ function idou() { this._x += 2 } } この状態で実行すると、マウスをReleaseした後もマウスでボタンを追いかけてオーバーして いる間、常にX方向に移動し続けてしまうのですが、クリックした時だけXへ+2するには どうすればよいでしょうか
>>308 ①適当な図形のMCを作(ry
stop();は一応全部消していい
②レイヤーを追加してそのタイムラインに
レイヤーは追加しなくていいから①のレイヤーに
stop();
this.onRollOver = function() { //ロールオーバーの処理
this.gotoAndStop(2);
};
this.onRollOut = function() { //ロールアウトの処理
this.gotoAndStop(1);
};
this.onRelease = function() { //リリースの処理、クリップアクションのfumctionを実行
this._x += 2 //クリップアクション
};
③MCのクリップアクション
何も書かない
310 :
308 :05/03/07 23:09:52 ID:WbdOibiS
>>309 レスありがとうございます
その方法で出来るのですが、
例えば、多くのボタンを作成する際、クリップアクションにそのボタンの動作を記述すれば、
RollOver、Outは同じで、Relaseだけを変更するだけで(新たに作ることなく)、
そのボタンのやくわりを、変更出来ればと考えています。
説明不足ですいません。
>>310 フレームアクションに貼り付ける
stop();
this.onRollOver = function() {
this.gotoAndStop(2);
};
this.onRollOut = function() {
this.gotoAndStop(1);
};
ムービークリップに貼り付ける
on(relase){
trace("クリックしたよ")//処理
}
312 :
308 :05/03/07 23:52:13 ID:WbdOibiS
解決しました。ありがとうございます
FLASHMXでシューティングゲームを作ろうとしているものです。 敵の弾と自機との当たり判定を設定するとき、 各インスタンス同士の接触を当たり判定にすると余計な空白にまで 当たり判定が有効になってしまいますが、これを解消するにはどうすればいいんでしょう? 1、自機の「当たり判定」としたいところに別のインスタンスを設け、 敵の弾とはそのインスタンスとの接触で判定する 2、自機の座標から「当たり判定」の区間を指定し、敵の弾の座標と比較することで 自機との接触を判定する 上記のどれが、またはどんな代替案があるかを教えてください。 よろしくお願いします。
true
すみませんが質問させて頂きます。 文字を入力バーから入力して、別のウィンドウに表示するスクリプトを書いています。 それ自体には成功したのですが、入力バーが""の時にリターンキーを押すと 文字をウィンドウに飛ばせるようにしたところ 変換が終わったものからどんどん飛んでいってしまいます。 例えば 「今日はいい天気だ」と打とうとすると 今日 は いい天気 だ と分裂してしまうんです。 こういう場合は、どのようにしてまだ変換中の文字があることを認識させればよいのでしょうか 何かお分かりになる方がいらっしゃいましたらご指摘頂けると幸いですm(__)m
316 :
315 :05/03/08 11:34:01 ID:J/AW1QNd
こちらがソースで、チャット入力オブジェクトに記述しています。 環境はFLASH5です。 onClipEvent (keyDown) { if (Key.isDown(Key.ENTER) == true) { if (_root.ChatBar.inchat != "") { _root.sendChat(_root.ChatBar.inchat); _root.ChatBar.inchat = ""; } } } //関数は_rootのフレームスクリプトとして記述 function sendChat (chat) { chat = _root.cname+":"+chat str = "<Ch chat=\"" + chat + "\"/>"; sendStr(str); }
>>315 onClipEvent (keyDown) {
trace("getcode :"+(Key.getCode() == (Key.ENTER)));
trace("isDown :"+Key.isDown(Key.ENTER)) ;
}
318 :
315 :05/03/08 12:16:03 ID:J/AW1QNd
ご指導ありがとうございました 大変参考になりましたm(__)m
このスレの人はどんどん教え方が上手くなってるなぁ・・・
320 :
Now_loading...774KB :05/03/08 14:06:40 ID:tbTFnQUQ
ちょっとスレの趣旨とは違うのですが、質問させてください。
以前オセロオンラインにあったActionScriptのドキュメントを
保存している方がいましたら、アップしてもらえないでしょうか。
タイトル:ActionScript基礎 (うろおぼぼえ)
URL:
ttp://f48.aaa.livedoor.jp/~star/as/index.html 補足:GoogleとInternet Archiveにはキャッシュなし
これを参考にXMLソケットの勉強していたのですがいつのまにか消えて困りました。
よろしくおねがいします。
321 :
295 :05/03/08 20:57:56 ID:Wxo/o5Cx
>>305 レス遅くなってすみません。
うーん、やはり無理ですか。
typeofでもobjectとしかかえってこないですしね・・・
オブジェクトをXMLにシリアライズするコードを書いていて、
これができれば格好よくクラス名をタグに変換出来るなと思っていました。
ここは諦めてプロパティ実装することにします。
(プロパティ名を同じにすれば希望の動作は出来ますしね)
ありがとうございましたm(_ _)m
さっきから、 パブリッシュしたムービーの動作がひどいことになっているんですけど、 flaファイルが破損していることなんてあります?
何がどう酷くなってるのかわからんから・・・・。 関数が気づかずに無限ループして酷くなる事もあるし、何とも言えんよ。 酷いってのは何さ。
324 :
322 :05/03/09 13:45:53 ID:EixmgOOJ
説明不足な文章で申し訳ないです。 「動作がひどいことになっている」 というところは、無視して下さい。 で、何が言いたいのかというと、 ・flaファイル破損という現象は特定条件で起こるものなのか? ・起こった場合、それを見分ける術はあるのか? ということです。 何度も本当にすみません
>>324 とりあえずコピー作って保存して最適化してみれ。
>>324 とりあえず、貴方の思考がひどいことになってそうです。
もちついてください。
328 :
322 :05/03/09 19:56:08 ID:EixmgOOJ
色々ご迷惑おかけし申し訳ないです。
状況としては、
・修正対象のflaファイルに何度か修正を行っているうちに、
今までのパブリッシュ結果とは全く違う不具合が多数発生する。
・修正内容はデバック用のテキストボックスへの書き出し程度。
・不具合が発生する前の状態のバックアップに差し戻し、
修正をかけると期待通りの動作が可能。
・ただし、再び幾度か修正を行うと同じように不具合が発生。
という状況です。
一度、不具合が起こるとその後の修正は全く反映されません。
ファイルを戻した場合のみ、不具合が回避されます。
「flaファイル破損」でググると、
何か似たような状況の方がいたので、何か分かるかなと思い、
質問したところです。
>>325 さん
ありがとうございます。
試して見ます。
不具合が何かを書け
>>328 状況が激しく見えないんだけど、デバック用にテキストボックスなの?
ダイナミックテキストに変数を表示させてるとか言う事かしら。
その程度のデバックならば、trace() で出力させる方が良いとも思いますが、
期待通りに動いてないからファイル破損を疑うと言うのはおかしいよ。
そこまで忠実に再現性があるのならば、まずはその修正とやらを考え直すべきじゃないかな。
それこそ、その”修正”が無限ループを引き起こしてる可能性があるとかさ。
普通に考えて、あなたが言う”修正”が、あなたの期待通りに動いてないだけとも思える。
実際に、どんな感じで不具合の症状が出るのか書かないと、対処のしようも無い。
機械は貴方が打ち込んだコードで、忠実に計算してるだけかもしれないし、バグかもしれない。
マジで、どう言う不具合が出てるのか分からないときついから。
自分の予測と違う動きをしてるのか、エラーを吐き出すのか、もう一度詳しく。
331 :
322 :05/03/09 20:41:42 ID:EixmgOOJ
ご迷惑をお掛けしてすみません。 trace()は実質使用できない状況です。 というのは、 ・多数のswfより構成されている。 ・FlashRemotingを使用し、CFと通信している などの理由の為です。 現状では、テキストボックスを貼り付けたドラッグ可能なウィンドウを作成し、 そのテキストボックスを変わりにtraceボックスとして使用しています。 (ブラウザで確認が必要な為) このテキストボックスへの出力は、 グローバルスコープの関数traceOut()を定義し、 引数として受け取った値を出力する機能だけを持たせています。 また、Objectオブジェクトを受け取った場合、 その中の要素全てを表示させる機能も付加してありますが、 網の目構造体を受け取った場合は無限ループに陥るため、 そこは気をつけて対応しています。 ですので、実際ソースに行っている修正は、 traceOut("test =" + aaa); のような一文の追記のみです。 <続く>
332 :
322 :05/03/09 20:42:17 ID:EixmgOOJ
<続き> それに対し発生するエラーは、 今まで期待通りに動作していた、ドラッグイベントにて、 違う動作が発生する。 など予想不可の不具合が出ています。 状況としてシンタックスエラー等でパブリッシュに失敗したとき、 そのままswfファイルをアップロードし動作させたときと似ています。 また、不具合が出た直前の修正内容を、 バックアップより戻したflaファイルに行っても不具合は再現しません。 ただし、再度同じファイルに対し修正を掛けていると、 不具合が発生します。 以上のような状況から、私はソース自身より、 FLASHそのものの仕様を疑っているということです。 長文すみません。 本当にご迷惑をお掛けします。
だーかーらー! 違う動作ってなんだよ!
>>331 1行目から読んでないけど
ならFlash使わなきゃいいでしょ
ソースの開示はどうせ無理だろうけどさ・・・。
貴方の言う”正常動作”がわからないんだよ。俺ら。
traceOut() 関数に何か問題があるのかもしれないし、パス構造に問題があるかもしれないし、
テキスト出力の絡みで問題があるかもしれない。
ほんと、
>>333 と同じ事言うけど、
想定外の動作って何よ・・・。
俺らわからんから。
ひどいことってなんだよって聞いたら、まったく違う不具合と言い出して 不具合って何よと聞くと違う動作とか言い出す始末。 釣りか?
もういいよ。flaの不具合でしょ。はい次。
本人がフラッシュが悪いと結論づけているのだから、 我々がとやかくいうことはないだろ。 普通に戻りましょう。
フラッシュが悪いと思ったのならマクロメディアに連絡すれ っつーか、PCがウイルス感染してんじゃね? 仮にそうだとしても板違いだが
340 :
322 :05/03/09 22:32:27 ID:EixmgOOJ
ご迷惑をおかけして、 申し訳ございませんでした。 後は自分で考えます。
341 :
Now_loading...774KB :05/03/10 00:17:20 ID:kONS4kS2
以前に2004で作ったswfをver6対応にしてほしいとなった時、 書き出しをver6にしたらBMPがバグり、 そのBMPを取り替えたらそのFlaがバグったようで、 BMPをどう取り替えても真っ黒の空のBMPになる現象が起きた事がある。 後、アップデート当ててないFlashで複数のAS(タイムライン上の)を タブでロックしながら編集すると、保存時に保存されていない不具合とか。 322のソレとは関係ないけどね。
BMPが黒くなるんですー。 って書けば解決な訳だ。 どんな不具合かわからねーって言ってるのに、それを書かなかったのが原因だしな。
343 :
Now_loading...774KB :05/03/10 10:43:05 ID:nf+yIchP
actionscriptで ボールの動きを再現したいのですが どういう風につくればいいのでしょう つかんだり つついたり 落としたり 出来る物が作りたいです 参考になるサイトなどでもいいので 教えてください
345 :
343 :05/03/10 12:23:18 ID:nf+yIchP
>344 ありがとうございます 参考にします
346 :
Now_loading...774KB :05/03/11 01:08:52 ID:nxl/5uiJ
いい加減AS2.0に慣れたいと思うのですが、 クラス等の記述方法について判りやすく解説してるサイトってあるでしょうか?
完璧にやるならドメインが必要だけど ちょっとした作品製作ならasフォルダでも作って パスをas/~みたいに短くしちゃっていいと思われ。 本気でやりたければFlashOOPとか買って あとはJava用のサイトを見ればいい。
オブジェクト指向のパッケージは トップに自己ドメインからつけて世界中の重複を無くすということが推奨されているから。 でも別に個人で気楽に作るものに必要だとは思わないけどね。
JavaのOOP本買ったら?
ループ文を大量に使用すると書き出しは出来て正確に動作しても プレビュー出来ない不具合について
354 :
Now_loading...774KB :05/03/11 18:34:05 ID:nxl/5uiJ
>>349 私のレベルでも判りそうです。
有難うございます。
>>348 ピンクの本ですね。
背伸びして買ってみたのですが、
私には少し難しく、ついていけませんでした…。
皆さん、有難うございました。
355 :
Now_loading...774KB :05/03/11 21:29:27 ID:AxGHFdU9
乱数シードって、設定できないんですか?
うん。
357 :
Now_loading...774KB :05/03/12 02:41:38 ID:qBR1lXRh
質問なんですが、flashにミュート用のボタンを作ったんですが 次回観るときもミュートボタンが有効になるように on/offを保存する場合はどのようにすれば良いのでしょうか クッキーもしくはApplication Dataを使うのかなと考えているんですが ヒントだけでも教えてください
359 :
357 :05/03/12 04:06:39 ID:qBR1lXRh
>>358 さん
お早いご回答ありがとうございます、凄くわかりやすくできました
360 :
Now_loading...774KB :05/03/12 09:29:06 ID:HF/kmz5r
チャットを作っています。 Key.addListenerでKey.ENTERを判断しているのですが、 漢字変換の確定中のEnterまで取得して、途中で送信されてしまっています。 これをうまく漢字確定後のEnterで送信するにはどうしたらよいのでしょうか。
362 :
Now_loading...774KB :05/03/12 10:22:30 ID:HF/kmz5r
>>361 たぶん違うとおもいます。
あと
Selection.setFocus()でTextFieldにフォーカスを充てるとEnterが反応しません。
どうすればよいでしょうか?
Microsoft Windows XP Home Edition Version 2002 Service Pack 1a で Macromedia Flash MX Professional 2004 Version 7.0 を使ってるのですが、 9個の変数(a,b,c,d,e,f,g,h,i)の値が全て違うかどうかを判断する演算を行う場合に 処理が軽くなるにはどんな式をつかったらよいのでしょうか
中身何?文字?数字?
>>366 すべて数字です
1か2か3か4か5か6か7か8か9の数字です
配列にぶち込んでforで比較なんてどうだろう。
それくらいの数なら馬鹿比較で問題ないぞ function onaji(hairetsu){ for (i = 0; i < hairetsu.length; i++){ for (k = i+1; k < hairetsu.length; k++){ if (hairetsu[i] != hairetsu[k]) return false; } } return true; } trace(onaji(hoge)); こういう感じで
バカ比較って言うなら if(a!=b&&b!=c&&c!=d&&d!= 略
それはある意味天才なので
a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=i&&b!=c&& b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&b!=i&&c!=d&&c!=e&&c!=f&& c!=g&&c!=h&&c!=i&&d!=e&&d!=f&&d!=g&&d!=h&&d!=i&&e!=f&& e!=g&&e!=h&&e!=i&&f!=g&&f!=h&&f!=i&&g!=h&&g!=i&&h!=i これはバカですか・・
それはある意味天才なので
>>372 漏れ、マジでそれしか思い浮かばなかったんだけど・・・
全部足して9で割るとか? if((a+b+c+d+e+f+g+h+i)/9==a)trace("一緒")
どこかに1 2 3とあった時点で破綻するだろ。
>>375 それだと全部の変数が5のときでもtrueになってしまいますね
そろそろビット演算の神の光臨キボンヌ
つか相変わらずうっかり技術スレみたいな話しちまうな。 お前らどうせ同じメンバーだろうけどもう少し向こうでこういう話しようぜw
ふと思った。 a = [1,2,3,4,5,6,7,8,9] からspliceで変数に割り当てれば良い様な気が・・・。
さよならを言ってからなかなか終わらないチャットのようだw
2の変数乗を足してみる。 だめ?
効率の良さって いろんなパターン組んでみて 1000回単位で回して速度を測って みるしかない気がするのだが 一番効率が良いのは効率を気にしないことではと 思うのですがどうなんでしょう?
385 :
375 :05/03/13 22:59:36 ID:erSgyOX/
そうか。全部一緒かどうかと思ってた。じゃあ1~9決めうちでこんなとか? if((1<<a)+(1<<b)+(1<<c)+(1<<d)+(1<<e)+(1<<f)+(1<<g)+(1<<h)+(1<<i)==1022)trace("異なる")
>>384 たしかに。
「効率が良い」コード
・実行速度が速い
・メンテナンス性が良い/拡張性が高い/デバッグが容易
・バカでも分かる/コーディングにかかる時間が少ない
どれを求めるかによって変わってくるね。
どうでしょ? s=1<<a|1<<b|1<<c|1<<d|1<<e|1<<f|1<<g|1<<h|1<<i; if(s==1022){ trace("barabara"); trace(s); } else { trace(s); }
>>387 速さ以前に、扱いの効率の良い配列を使うことを覚えて
コードをまず書いてみて、それから早くする方法を尋ねてください。
配列になっていれば、並べ替えと、
並べ替え判定のfunction用意すれば、2行で終わるかも。
「全て違うかどうか」 っていうのは 全て違う <=> ¬(少なくとも一組同じ値がある) というケースですね? 全て同じ <=> ¬(少なくとも一組違う値がある) の方ではなく? 変数が9個で値が1~9に限定されている前提ならば全てかければいいだけの話では? 362880と比較
あ、385を見てなかった・・・
ビット演算子キター
ごめんなさい、単位元と因数可能な整数について考慮し忘れてました
活気があってよろしいですなー。 やっぱ、1~9しか無いって時点で、総乗で比較がスマートな気がしないでも無いけどね。
hairetu = [a,b,c,d,e,f,g,h,i]; あとは369 コレで分からなければ諦めたほうがいいかと。
落ちる
397 :
Now_loading...774KB :05/03/16 13:44:26 ID:MGESUmYj
LoadVars で外部テキストファイルを読み込んでいるんですが % 以降の文字がが化けて >>? のようになってしまいます。 どうしたらよいですか?
398 :
397 :05/03/16 13:53:24 ID:MGESUmYj
399 :
Now_loading...774KB :05/03/16 14:47:53 ID:hW7XPlKL
質問です。 カレンダーを作ろうと思い、まず6行*7列のセルを用意します。そこまではできました。 次に、それぞれのセルに、1から42まで順番に数字を割り振ろうとしたのですが、それが上手く出来ません。 御教授をお願いします。環境は MX2004/Win2Kです。 希望処理(手順) 1 ムービークリップとして複写元となる Day_cell_00 を用意する。 Day_cell_00ムービーは、t_DLダイナミックテキストを内包。 2 Day_cell_00 を複写した後、表示位置を調整。 3 複写したムービー内のt_DLダイナミックテキストの text 値を更新。
400 :
Now_loading...774KB :05/03/16 14:48:39 ID:hW7XPlKL
コード
>>399 コード
make_Day_cell();
function make_Day_cell() {
var n, w, d;
se = Day_cell_00.t_DL.text;
Day_cell_00._visible = 0;
Day_cell_00._width = 50;
Day_cell_00._height = 50;
Day_cell_00._x = 180;
Day_cell_00._y = 80;
for (w=0; w<6; w++) {
for (d=1; d<=7; d++) {
n++;
dateBox = "D"+n;
duplicateMovieClip("Day_cell_00", dateBox, n);
this[dateBox]._x = Day_cell_00._x+Day_cell_00._width*d;
this[dateBox]._y = Day_cell_00._y+Day_cell_00._height*w;
this[dataBox].t_DL.text = n ;
}
}
}
>>399 うまくできないとは具体的にどういう事?
表示されないとか?
402 :
399 :05/03/16 16:01:11 ID:hW7XPlKL
>>401 t_DL.text の数字が更新されないんです。
this[dataBox].t_DL.text = n ;
の部分が上手く行ってない気がするのですが…
this[dataBox].t_DL.text = n ; dataBox?
duplicateMovieClipってこんなんだっけ? アタッチじゃなくて?
>>403 元のコードの方は[dateBox]になってます。
すいません、タイプミスです。
408 :
fora :05/03/16 17:01:32 ID:L8z+woxg
コンポーネントを使わない特殊なチェックボックスについて質問させて下さい。 1つの問題に対して選択肢が複数あり、その中から正解を2つ選択するのですが 常に一つだけ選択できるチェックボックスはできたのですが、2つだとうまくできません。 ※条件 1.チェックボタンは2つしか選択できない。 2.3つ目を選択すると、1つ目が解除される。 ※状態 1.rootにMC、radio_button1~radio_button4までを配置 2.rootのフレームアクションに下記のソースを記述。 buttonNum = 4;//ボタンの数を設定 A = [2, 3];//正解の設定 checkID = false; //checkIDがどのボタンがチェックされているか nowChecks = new Array(); for (var i = 1; i<=buttonNum; i++) { this["radio_button"+i].gotoAndStop("off"); } function nameChange() { IDNum = (checkID.substr(-1, 1))-1;//現在選択されているボタンを配列に登録 nowChecks.unshift(IDNum);//常に登録数は2つまで、古いものは削除。 nowChecks.splice(2, 1); }
409 :
fora :05/03/16 17:03:33 ID:L8z+woxg
つづきです。↓ 3.MC、radio_buttonの一階層中のフレームアクションに下記のコードを記述。 radio_buttonの中にはMC、radio_BTがあり、1フレーム"on"、2フレーム"off" となっています。 radio_BT.onPress = function() { karihen = _root.nowChecks[1]; for (var i = 1; i<=_parent.buttonNum; i++) { _parent["radio_button"+i].gotoAndStop("off"); } gotoAndStop("on"); _parent.checkID = this._parent._name; _parent.nameChange(); }; 制作環境:FlashMX、winXP 以上です。よろしくお願いします。
410 :
Now_loading...774KB :05/03/16 17:36:08 ID:OIduN+Rf
すいません。教えてください。 ASで銀はがしを作ってるんですが、 function drawmask(){ w=20; left=_xmouse-w/2; top=_ymouse-w/2; right=_xmouse+w/2; bottom=_ymouse+w/2; with(newmask){ beginFill(0xffffff ); moveTo(left,top); lineTo(right,top); lineTo(right,bottom); lineTo(left,bottom); endFill(); } } このスクリプトだと、はがれ方が四角形になって しまいます。大きな円形に削れるようにしたいのですが、 良かったら教えてください
>>410 HelpのMovieClip.curveTo()みれ
412 :
:05/03/16 17:55:44 ID:TjtNu1As
すみませんが質問させて頂きます。 上キーを押したとき、キャラクターが上に移動するゲームを作っているのですが onClipEvent (keyDown){ if (Key.getCode() == Key.UP) { mychara._y -= 10; } } のように書くと 上を押して一度動き、その後0.5秒ぐらい止まったあと上のほうに動きはじめます 実際のキーボードのカーソルの動きと連動してるのだと思うのですが これでキャラを動かすと、快適に動かすことができずに困っております。 Flashの場合、これは仕方のないことなのでしょうか 何かお分かりになる方がいましたらアドバイスを頂ければ嬉しいです
413 :
412 :05/03/16 18:00:28 ID:TjtNu1As
すみません、enterFrameを使うことで自己解決しました
>>413 コンパネのキーボードの表示の間隔に左右されちゃうよね。
415 :
410 :05/03/16 18:32:08 ID:OIduN+Rf
function drawmask(){ w=30; left=_xmouse-w/2; top=_ymouse-w/2; right=_xmouse+w/2; bottom=_ymouse+w/2; with(newmask){ beginFill(0xffffff ); moveTo(left,top); curveTo(left+15,top-15,right,top); curveTo(right+15,top+15,right,bottom); curveTo(right-15,bottom+15,left,bottom); curveTo(left-15,bottom-15,left,top); endFill(); } } で自己解決しました。 411様ありがとう。安易に質問してすいません。
416 :
Now_loading...774KB :05/03/16 20:44:02 ID:EmU49ojf
すみませんが質問です。 ムービークリップ名が aaa0bbb0 aaa0bbb1 aaa0bbb2 aaa1bbb0 aaa1bbb1 aaa1bbb2 とかの場合にfor文を使って、それぞれのムービークリップにアクセスするにはどのように記述したらよいのでしょうか。 下のように、eval文を使ってもうまくいきません。 トレースすると名前はちゃんとできているようですが・・・ for(i=0;i<3;i++){ for(j=0; j<3; j++){ eval("aaa"+i+"bbb"+j)._xscale=200; trace("aaa"+i+"bbb"+j); } } evalのかわりに this["aaa"+i+"bbb"+j]._xscale=200; と書いてもダメでした。
eval("aaa"+i+".bbb"+j)._xscale=200; this["aaa"+i]["bbb"+j]._xscale=200;
419 :
Now_loading...774KB :05/03/16 22:21:49 ID:EmU49ojf
>>417 できませんでした。
どうしてなんでしょう・・・階層もインスタンス名もちゃんと書いてるのですが。
>>418 ターゲットのムービークリップに変化がなかったので。
this.aaa0bbb0._xscale=200 って書いて動くの?
421 :
Now_loading...774KB :05/03/16 22:47:52 ID:EmU49ojf
>>420 はい、直接指定して書くと動くのですが・・・
eval("aaa" + 0 + "bbb" + 0)._xscale= 200 って書いたら動く?
423 :
Now_loading...774KB :05/03/16 23:07:29 ID:EmU49ojf
trace(eval("aaa"+i+"bbb"+j)); ってやってundefinedが出るか? 出ないなら他の処理が悪さしてるんじゃね とりあえず最小構成で試してみたら?
とりあえずevalはよくないらしいから[ ]を使うとして ムービークリップを1個だけにして実験するとかしてみな。 あとはプレビュー中にオブジェクトのリストアップをしてみるとか。 予想だが、アクセス部分で問題が起こっているんじゃなくて MCの配置とか名前が間違っていそう。
426 :
Now_loading...774KB :05/03/16 23:23:32 ID:EmU49ojf
>>424 _level0.aaa0bbb1
_level0.aaa0bbb2
_level0.aaa0bbb3
_level0.aaa1bbb1
_level0.aaa1bbb2
_level0.aaa1bbb3
と出ました。
>>425 そう思って、新規ファイルでそれだけ命令とムービークリップ作ってやってみてるんですけどねぇ、
うまくいかなんですよ・・・
>>426 ちなみに、_xscaleじゃなくて_xで位置替えとかはできる?
スケールだから。。。。
おかしいな
>>416 の条件下で実行したなら
_level0.aaa0bbb0
_level0.aaa0bbb1
_level0.aaa0bbb2
_level0.aaa1bbb0
_level0.aaa1bbb1
_level0.aaa1bbb2
undefined
undefined
undefined
と出るはずなんだが
まあ、多分レス上の都合だろうから関係ないか
とりあえずパスはあってるみたいだし、それでアクセスできないとなるとわからん
429 :
Now_loading...774KB :05/03/16 23:44:40 ID:EmU49ojf
はい。 位置でやってもダメでした。 何が原因なんでしょう。 417さんにあったようにやったら普通できるんですよね?
っていうかMX?
432 :
Now_loading...774KB :05/03/16 23:53:21 ID:EmU49ojf
>>430 えっとですね、最初に投稿したようにfor文を使って書くとムービークリップには何の変化もないまま。
直接1個1個ムービークリップ名を書いて処理されるときちんと処理される。
という感じです。
433 :
Now_loading...774KB :05/03/17 00:00:25 ID:WNkqs/Hq
>>431 MX2004Proでうまくいかなかったため、MXでも試してみましたが動作しませんでした。
>>432 じゃあfor文がどっか良くない。
その指定で、MCが指定できないってことは無いし
_xscaleを指定して動かないってことも無いし
Flashのバグではありえないから
多分forの数字が違うはず。
435 :
Now_loading...774KB :05/03/17 00:26:22 ID:WNkqs/Hq
>>428 すいません。投稿するとき書き間違えました。
for(i=0;i<2;i++){
for(j=0; j<3; j++){
でした。
>>435 for(i=0; i<2 ;i++){
for(j=1; j<4 ; j++){
438 :
Now_loading...774KB :05/03/17 00:53:18 ID:WNkqs/Hq
なんどもすみません、こうでした。 for(i=0; i<2 ;i++){ for(j=1; j<=3 ; j++){
440 :
Now_loading...774KB :05/03/17 01:15:18 ID:WNkqs/Hq
>>439 わざわざありがとうございます。
そのファイルを編集してfor文つけて試してみるとできました。
自分のファイルはなんかゴミとか不具合があったんでしょうかね・・・
どうもお騒がせしました。
441 :
Now_loading...774KB :05/03/17 04:40:50 ID:l9V4j9jf
動作環境:macOS9.2,flashMX フラッシュで一つのswfにボタンを複数(5個)作ったものを 書き出しまして、そのswfをふくむHTMLからそれぞれの ボタンのリンク先のフォルダ内にあるHTMLをランダム に表示させる仕組みを作りたいのですがうまくいきません。 なにぶん初心者の為に色々試してみたもののダメでした。 どうかご指南下さい。何卒宜しくお願い致します。
Mac OS9.2、Flash 5
ページを横に引き出すと絵が変わる「しかけえほん」のような動作を
startDrag() で再現させたいと考えています。
が、レイヤーの構成が
レイヤー1:絵のアウトライン(ドラッグの対象)
レイヤー2:レイヤー3を表示させないための白ベタ(※ドラッグの対象外)
レイヤー3:色付きの絵(ドラッグの対象)
となっているため、レイヤー1と3のみを動かすことに成功できません。
何か方法があれば、調べるヒントになるものを教えていただけないでしょうか。
仕事ではないので急ぎません。
「しかけえほん」の意味が伝わりにくいと思うので、
geocitiesを借りてFlashムービーを載せました。
http://www.geocities.jp/goody3333shoes/question.swf
>>441 ちょっと状況がわからないんだけど、Flashで作ったボタンをHTMLに貼り付けて、それを押すとハイパーリンクするって事でいいのかな・・・。
MCのスクリプトでこんな感じでどうだろう。
onClipEvent (load) {
a = ["
http://www.google.co.jp/ ", "
http://www.goo.ne.jp/ ", "
http://www.2ch.net/ "];}
on (release) {
b = Math.floor(Math.random()*3);
getURL(a[b]);}
>>442 マスクを使うよろし。
マスクレイヤーでも出来るし、もっと豪快にやるならASでsetMask()。マスクを検索してみると吉。
Flashのマスクは、適用された部分 ”のみ” を表示する。他のツール(フォトショ等)とは全く逆。
まず何もしかけのないドラッグができるのかが問題だけど… できると仮定して、 ドラッグした位置のxを取得して、hogeとして レイヤー1のMC._x=hoge レイヤー3のMC._x=hoge とすれば、1と3だけ動かせる。 5だと、on(press)がボタンにしか書けない気がするから 引っ張るものはon(press)で、引っ張られる側はonClipEvent(enterFrame)使って移動と ひと手間かかると思う。
445 :
443 :05/03/17 09:46:26 ID:X1qfwqm1
446 :
442 :05/03/17 11:46:40 ID:bSwTO5fT
>>444 お陰でできますた!
「引っ張る側、引っ張られる側」という説明がすごくわかりやすかったです。
レイヤー1と3をどうにか一緒に動かそうとばかり考えてました。
引っ張る側:レイヤー3のMC(flash 5だとボタンにしかon(press)が書けないのでボタンうめこみ)
_x を取得して、引っ張られる側:レイヤー1のMC._x に代入。
できちゃうとなんちゅうことないですけど、うれしい。。。
ありがとうございました。いらないでしょうけど、感謝の投げチッスを送ります。
>>443 いえいえ、答えようとしてくださったの感謝です。
私も質問する直前にマスクが使えるかな→違うか。。。という過程を経ました。
447 :
Now_loading...774KB :05/03/17 19:04:54 ID:O6FSgSkA
curveToについてですが、 通常、アンカーポイントと始点の座標を入れますよね。 このアンカーポイントを前後2つ打つ事は出来ないのでしょうか? 片側だけでは綺麗な弧にならず困ってます。
moveTo で移動した所か、lineTo , curveTo で書き終わった点が始点ですね。
>>447 つまりそれは2次ベジェというやつだと思うのですが
curveToでは1次ベジェしか対応していないので
Flashで普段使われるような2次ベジェは使えません。
ただ、1次ベジェを上手く使えば擬似的に2次ベジェっぽくはできますけどね。
(oがカーブのポイントで、xが始点と終点)
o x o
x x
こういう感じに、2つの1次ベジェが繋がるように配置するんです。
お互いの繋がる点と、カーブのハンドルの位置が直線に並ぶ時に、
綺麗に繋がります。
450 :
315 :05/03/18 00:35:05 ID:UnMcX02N
すみません、少しお聞きしたいのですが リンケージを使って複製したMCに対して当たり判定をつけたいと思っています。 環境はFlash5です。 attachMovieでMCをいくつか作り画面上に配置し プレイヤーが操作するキャラが、配置されたMCにあたったとき 障害物として認識して通れなくする処理をしたいのですが このときのhitTestのターゲット指定をどのようにかけばよいのか分からず、こちらに書き込みさせて頂きました 障害物のMCを[WALL]+1~10ぐらい、プレイヤーのMCを[mychara]としたとき for(var i=0 ; i<100 ; i++){ if( _root.mychara.hitTest( _root["WALL" + i ]) ) } このように、For文で対象とする障害物のMCが何個あってもいいようにしているのですが もう少し動作を軽くできればと思い、なんとかしようと試行錯誤しております よろしければ何か助言を頂ければ幸いです
>>450 WALLの方にhitTestのルーチンを記述する
452 :
Now_loading...774KB :05/03/18 03:25:35 ID:6zR79KHC
同じくhitTestについての質問です。 ムービークリップ同士で境界ボックスではなくシェイプで衝突判定するにはどうしたらよいのでしょうか。 それと、ムービークリップに傾斜をつけるアクションの書き方ってあるのでしょうか。 垂直や水平にリフレクトさせたいんです。 どなたかご教授おねがいします。
>>452 >ムービークリップ同士で境界ボックスではなくシェイプで衝突判定
無理
>ムービークリップに傾斜をつけるアクションの書き方ってあるのでしょうか。
2重か3重にネストしてやれば動かせないことも無かったはず。
ますは直角三角形を自由に動かす方法から考えて
それを2個組み合わせてやる感じで考えてみれ。
454 :
452 :05/03/18 04:28:24 ID:6zR79KHC
>>453 ありがとうございます。
そうなんですか・・・残念ながら断念しようと思います。
そのムービークリップというのは静止画ではなく、中にアニメーションがついているんですよ。
なので、できないということに。。。
>>452 hitTestで自分のシェイプと任意のxy座標との当たり判定はできる。
任意のxy座標はどうするか考えればなんとなくできるかもね。
>>452 小さな■とか●とかを入れ子に敷き詰めるとかな・・・。お勧めできないが。
描画した図形ならば、方程式とhitTestさせるのはかなりイカス。
457 :
452 :05/03/18 14:30:18 ID:6zR79KHC
>>455 >>456 ムービークリップのひとつが水の波紋のように円がいくつか出てくるようなモーションでして
それひとつひとつの点を三角関数とか使って描画させて、全部に衝突判定させるには重過ぎますよね、きっと。
小さな四角や円を入れ子に敷き詰めるのはいいかもしれません。
試してみます。
458 :
Now_loading...774KB :05/03/18 18:58:58 ID:DkXITI3/
>>449 なるほど、とても参考になりました。
有難うございます。
459 :
Now_loading...774KB :05/03/18 22:39:49 ID:DkXITI3/
色々試行錯誤した結果出来ました。
その過程で気付いた事をいくつか。
o x o
x x
Fireworksのベジェでoの位置は始点から前後に直角に
半径x0.55程度の位置にポイントを打つ事で正円になっていたのですが、、
Flashの場合は始点から直角に半径x0.4で正円に近い弧になるようです。
(1次ベジェと2次ベジェのアンカーの仕様の違い?)
上記の事から、正円を描画するには45度ごとに半径x0.4の位置にアンカーを打つ事で
正円になりました。
>>449 様、感謝致します。
>>459 Flashの円はイラレ、FW、FHなんかの基本ベジェと違って8点アンカーだよ。
クロスパスの概念が分かると、特化した部分と特色が分かると思う。
Flashで描画をやるならば交差パスを認識しておくとかなり有利。
使いこなせると滅茶苦茶良いよ。
461 :
450 :05/03/19 11:10:43 ID:agZlXFV4
451さんお返事ありがとうございました 対象を壁にすることも考えてみたのですが、キャラクターのほうも複数複製する場合は やはりターゲットとなるMCのパスをFor文で回して処理をするのが一般的なのでしょうか 数十以上に複製したMC同士で衝突判定を行う時など、どのような処理を行なえばいいのか ということについてここ数日悩んでおります ある特定のMCではなく、何かと衝突した時処理をするということができればいいのですが・・。
本体の hitTest じゃなくて、弾(?)とか壁(?)側に本体との hitTest させれば?
お返事ありがとうございますm(__)m 今作っているゲームは、自分の操作するキャラクターが1つではなく キャラクターが複数に増えて、それぞれ独自に動くのです そして、その複数いるキャラクターが動いているとき、複数ある壁に当たったということを認識させるには どうすればいいのか、ということです 説明が分かりづらくて申し訳ありませんでした。
総当りでもいいじゃん。最初はさ。 考え方さえ正しい方向ならば、問題無いよ。 総当りじゃウザいなーと考えてから一括処理、分岐処理を考えても遅くないかと。
465さんありがとうございます そう言って頂けると安心します enterFrameで行なう処理が増えてきてしまったので、 少しでもクライアントの負荷を軽減しようとやっきになりすぎていたようです 総当りでスクリプトを組んでいれば、いつかもっといいアイディアが閃くかもしれませんし 465さんの教えに従ってしばらくは自分にやれることを頑張ってみます ありがとうございましたm(__m
467 :
450 :05/03/19 12:15:40 ID:agZlXFV4
463さんもサイトのご紹介ありがとうございましたm(__)m
468 :
AQUA ◆U2AQUA/xP. :05/03/19 15:17:18 ID:5m7TvFzt
>>464 氏
話からするとゲームですかな?
RPG系などであれば、横移動でマス目にそって動かしますよね?
なので
■
■オ■
■
オ…obj
■…当たり判定(hitTest
という様にすればいいのですが。
ちょっと分だけでは説明しにくいですな(汗
または配列で宣言しておく。
【この場合は、縦10マスのMAPの場合とする】
for(i=0; i<10; i++){
map[i]=new Array(map_txt[i]);
}
こんな感じですかね。
for文を使って高速に配列宣言をします。
map_txt[i]配列の中にはASで宣言した(もしくは外部ファイルから読み込ん)MAP定義テキストが代入されます。
例としては
map_txt="1,0,0,0,0,0,0,0,0,1"
の様な感じです。
で、キャラの座標を読み取り、次に動こうとする場所が禁止エリア(1)であれば
進ませない。
このスクリプトは配列宣言部分だけなので、このASをどう使うかは貴方にお任せします。
hitTestばかりで複数のobjの衝突判定をすると動作が重くなるので、
配列でMAP宣言するのが一番の方法かもしれませんね。(マス目移動であれば
360移動型RPGだとマス目での配列宣言は非常に困難になりますけど。
sage忘れすいませんorz 誤:map_txt="1,0,0,0,0,0,0,0,0,1" >正:map_txt[0]="1,1,1,1,1,1,1,1,1,1"; *補足…数字が全部1なのは配列map_txt[0]が壁の役割をするからです。 抜けられては困るので全部閉じてます。 誤:360移動型 >正:360度移動型 です。
470 :
450 :05/03/19 16:56:59 ID:agZlXFV4
おぉ、なるほど! マップを定義するとかなり処理が減りますね 1マスの大きさ(縦×横)さえ決めれば、配列で禁止エリアを決められるということですね 壁が複製されたら壁MCのonClipEvent(load)内でその位置を禁止エリアに定義して、 壁が消える時に、禁止エリアを解除する。 キャラクターは複数存在する相手MCではなく、配列を見るだけで進めるかどうか判断できる。 どちらかというとC言語系な考え方なのでしょうか 言われてみれば、なるほど!と思うのですが今まで全く思いつきもしませんでした 早速スクリプトを書き直してみたいと思います どのぐらい軽くなるか楽しみです AQUAさん本当にありがとうございましたm(__)m
>>450 氏
それはよかったですw
この方法なら、配列内容を変えるだけで空想的な空間があやつれますね。
ドアとかも作れると思うので、頑張って下さい(笑
スレ違いかもしてませんが、独学でAS勉強した人って参考書何冊くらい持って ますか?
>>472 一冊。
ほとんどネットで調べた。あと立ち読み。
3冊かな 知れば知るほど欲しくなるね oopの解説あたり持ってないと2004からは辛い
ASnativeの対応一覧表とかって無いっすかね・・・。
>>472 0冊
チュートリアルとヘルプとネット情報で
MXならなんとかなるが、回り道になるのでオススメできない
つーか回り道したorz
皆さんレスありがとうございます。ちなみにお勧めのAS専用本てなんですか? MX2004使ってます。
>>477 Flashの本を買うことをお勧めしない
ネットで全部調べれる
>>477 2004から始めたなら、取り敢えず基礎のアクションスクリプトバイブルあたりから
始めたらいいと思うけど、そうじゃないなら、Java関係のoopに関する解説書あたりと
照らし合わせながら勉強するといいと思う
ネットで載ってることもあるけど2004に関してはまだ日本語の解説サイトは少ないよ
ASコピペ専門ユーザー故、コピペできる状態のAS希望。
1.aaa.swfにある5つのラジオボタンからprefs.txtに変数を送るAS
2.bbb.swfで変数を受け取って、その変数に応じてMCのフレームを指定するAS
具体的にはScreenTimeの設定画面で表示するフレームをラジオボタンで選択して、それがスクリーンセーバーのswfに反映されればOK。
変数の保存コマンドおよび読み込みコマンドは以下参照。
http://www.screentime.jp/contents/screentime_tips.html 環境はWinXP + FlashMX(Education Ver)
よろしくお願いしますm(_ _)m
>>481 丸投げ却下。ここは依頼スレじゃねぇ
該当するような依頼スレは漏れは知らん
ものすごい勢いで回答するなら、
出来ないし、やろうともしない、ならやめればいい
>ASコピペ専門ユーザー
そんなユーザーがどうなろうが知ったことではないから、
そっちの都合を書かれても知らん
と、予防線のテスト
>>481 trace("unko");
はいできたよー
お尋ねします、環境はFlash5です オレンジ色の文字が書かれているMCをリンケージ指定で呼び出し画面に配置したところ プレビューでは元のオレンジ色で、表示されるのに対して IEで表示すると青い色で表示されてしまいます 原因が全くわからず、今まではこんなことがなかったので不思議に思っています MCは以下のように呼び出しています。 attachMovie( "gameStartMessage", "gameStartMessage", 20002 ); gameStartMessageの中身は GAMESTARTと書かれたオレンジ色の文字を拡大、縮小しているのみです。
486 :
Now_loading...774KB :2005/03/21(月) 13:20:55 ID:HuKQu+AQ
外部JPGを読み込んで表示するギャラリーを作っています。 JPGが見つからなかったりサーバーダウンなどで読み込めなかったときのエラー判定はどうすればよいのでしょうか? ちなみにMC.loadMovie("xx.jpg")でMCにロードし、その都度プリローダーを表示、 ロード完了したらプリローダーを消して次のフレームに移動、 という感じなのですが、画像が無い場合にずっとプリローダーが表示されたままで次に進めません。 getTimer()でロード時間を取得し、数秒経ってもMC.getBytesTotal()が0以下の場合に エラーとみなして次の処理をするようにしてみたのですが、 やはり接続環境や混み具合で外部JPGへのアクセスに時間がかっているときでもときどきエラーが出てしまいます。 よいエラー判定がありましたらご教授くださいm(_ _)m WinXP+SP1、Actionscript2.0です。 MX2004ですが、Loaderコンポーネントはサイズが大きいので通常のMCにロードしたいです。
487 :
486 :2005/03/21(月) 13:24:13 ID:HuKQu+AQ
あげてしまいましたm(_ _)m
質問です。 FlashMX2004を使ってます。 01.swf を 01.html と 02.html に張ります。 他のページから 01.html へ飛んだときは 01.swfの「シーン1」を再生。 02.html へ飛んだときは 01.swfの「シーン2」を再生。 て出来ますでしょうか?
489 :
Now_loading...774KB :2005/03/22(火) 00:11:56 ID:/uWVJEyw
01.swf?flag=xxxx で_rootに変数読み込んで分岐処理
FlashMXを使ってます。 FlashMXで記述したASの関数、或いはイベントなどをHTMLから呼び出すことは可能でしょうか。 HTMLのリンクがクリックされた時にFlash内の関数を呼び出すというのを実現したいのですが。。。 JavaScriptで出来るのかな?とおもって色々調べて見たのですがわかりませんでした。 Flash内のTEXTフィールドにおけるHTMLリンクの取り扱いとかは情報があったのですが、 HTMLの中にSWFファイルを埋め込んでいる状態でHTMLからFlashの関数を呼び出す、と いうのはありませんでした。
個人的には HTMLにJavaScript関数を書いて呼び出す方法を取ってるけど、 Flash内の関数をHTMLから呼び出す方法を取ってる人は結構いるの?
>>492 漏れはなるべくFlash内で完結するようにしてるけど。
FlashはFlashであり、その制御を他所に任せるのは不安。
重要な機能がフラ外にあって、ブラウザが対応してなかったりすると後々面倒だし。
例えば、再生や停止、チャプター再生の機能が欲しいときは、
メニュー呼び出しボタンつけたり、右クリックを拡張しておく。
htmlでその説明だけ言及しておくことで逃げる。
ああ・・・
>>490 の言ってる関数ってのは、Flashのビルドイン関数とかイベントハンドラ周りの事なのか。
てっきりFlash内に書き込まれてるユーザー定義関数をHTMLから呼び出すのかと勘違いした。すまそ。
ムービークリップの深度(重ね順)って制御できますか? プロパティ_depthがあるはずと思ったんですが、ありませんでした。
_root.aaaa.swapDepths(深度); _root.bbbb.swapDepths(深度); とかでおけでは?
swapdepth
498 :
496 :2005/03/23(水) 13:57:12 ID:3v95HJ4W
確かミスって深度を重ねちゃうとMCが消えちゃうような気がしましたが。
>>497 って何?MX2004?
単に突っ込みいれたつもりが実は自分が間違ってただけのうっかりさん?
只の重複レス しかし間違え易いといえば間違え易い
編集途中送信しちまった・・・ 只の重複レスだったようでスマンかった しかし間違え易いといえば間違え易いんだよなコレ スレ汚しすいませぬ
あぁ・・・ s が付くのか。 勉強になりやす。
俺よくそのsを忘れたりしたよ。
スレ違いだったらスイマセン。 質問なんですが、エディターでASを書いて FLASHに読み込むという方法は何がいいんでしょうか? FLASHで動作を確認しながらの方が効率的だと思うんですが・・・
>>506 普段使い慣れた好みのエディタを使える
読み込むファイルを変えるだけで部分的なロジックの入れ替えができる
特に2004のアクションウインドウは、ASがある程度長くなってくると 動作が重くなってくるしね。 あと勝手に//のコメントが次の行に移動させられるとか不満が多い。
511 :
510 :2005/03/24(木) 07:51:11 ID:p/iS7rIq
↑誤爆orz
うんこってどんな味がするんディスカ?
味覚は人によって差がある だからおまいが食ってみて感じた味
Flash MXを使っているのですが、 myColor=new Color(this); とやっても、演算子 '=' は、オペランドの前に来る必要があります。 と表示されて、うまく動きません。どこを直したらいいのでしょうか?
>>514 ほんとにそのmyColor=new Color(this);の行で起こってるエラーなんですか?
私がそれを行ってもエラーは出力されません
>>515 確かに、
on (release) {
myColor=new Color(this);
myColor.setRGB(0xFF9900);
}
このようなスクリプトを作って試してみたところ、
問題なく色が変わりました。
他の部分が間違っているのだと思います。
回答ありがとうございました。
winでMX2004proを使ってます。 まずparts1というmcを用意し、その中にsubparts1、subparts2というmcが入ってるとします。 で、たとえばそのparts1.subparts1やparts2.subparts1にaction()というメソッドを行うなら function textScript(num) { this["parts"+num].sumparts1.action(); } として、 textScript(1); とか textScript(2); とかやればいいですよね。 で、それと同様にparts1.subparts2やparts1.subparts2に行うなら function textScript(num) { parts1.this["sumparts"+num].action(); } として、textScript(2);とかやればいいかなと思ったのですが、ダメでした・・・。 こういう場合はどう記述すればいいのですか?
518 :
Now_loading...774KB :2005/03/25(金) 01:56:09 ID:QH3asFsq
>>517 function textScript(num) {
parts1["sumparts"+num].action();
}
519 :
Now_loading...774KB :2005/03/25(金) 10:58:10 ID:jhSD6ISW
WinXP、Flash5です 一定の倍率で拡大していく正方形MC1、MC2を、 一定の大きさになったらattachMovieでMCを生成し、 深度が3の倍数毎にMC2を出すようにしています。 それでattachMovieした時にMC2を回転させると、 指定した角度によって生成される時の大きさがおかしくなります。 if(dt==3*dt){ dt++; attachMovie("MC2","mc2"+dt,dt); _root["mc2"+dt]._rotation = kakudo←ここの値を任意で変える } MCの方に、始めの大きさを15ぐらいで設定しているのに kakudoを30~150にしたら大きさが100ぐらいで出てきてしまいます kakudoが0や10など水平に近ければ問題なく出てくるんですが… どうしたら初期設定の大きさで生成されるようにすればいいんでしょうか よろしくお願いします
常に実行されるif文かも。
521 :
Now_loading...774KB :2005/03/26(土) 05:19:45 ID:JLwzz+x6
MX 2004で質問です。 「set_txt0」「set_txt1」「set_txt2」...と名前を付けたMCに 「0.swf」「1.swf」「2.swf」...という外部ファイルを読み込ませたいです。 for (swf_count=0; swf_count<50; swf_count++){ swf_file = new String(); swf_file = swf_count + ".swf"; swf_mc = "set_txt" + swf_count; swf_mc.loadMovie(swf_file); } 現在、上記のようなASを書いてswf_mcがうまく動きません。 swf_mcに「set_txt0」「set_txt1」といったインスタンス名を 反映させるにはどうすればいいのでしょうか?
>521 evalを調べるといいことあるかも。ないかも。
523 :
521 :2005/03/26(土) 05:41:17 ID:JLwzz+x6
>522 返信ありがとうございます。 自分で調べてたら解決しました。 最後の行を _root[swf_mc].loadMovie(swf_file); にしたらOKでした。 スレ汚しすみませんでした。
525 :
Now_loading...774KB :2005/03/26(土) 12:32:18 ID:gOMSFzlf
WinXP MXです。質問です。 メーラーを起動させたくて ボタンシンボルにしたところに on (release) { getURL("mailto:info@xxx.co.jp","_blank"); } といれたら、メーラーは起動してくれたのですが ページまで変わっちゃいました。 ページそのままでメーラーだけ起動させる方法を教えてください。 よろしくお願いします。
on (release) { getURL("mailto:info@xxx.co.jp"); }
527 :
Now_loading...774KB :2005/03/26(土) 12:49:27 ID:gOMSFzlf
,"_blank" これがいらないってことですね!? ありがとうございます!試して見ます!
528 :
実験くん :2005/03/26(土) 12:59:15 ID:8wegOPjn
MovieClipクラスを拡張してMoveクラスを外部ファイルとしてつくりました。 呼び出すたびにDの値が増え、 Dが5以上になったときに透明度を減らすMoveToメソッドをつくりたいんですが、 メソッドを何回呼び出してもDの値が増えません。 たぶん呼び出されたときに0に初期化されているのではないかと思うのですが、 何か良い方法はないでしょうか? 宣言の方法が間違っているような気がするのですが・・・。 class Move extends MovieClip{ var X:Number; var Y:Number; var D:Number; //MoveToメソッド function MoveTo(X,Y){ this._x+=X; this._y+=Y; D++; if(D>=5){ this._alpha=20; } } }
529 :
実験くん :2005/03/26(土) 13:19:19 ID:8wegOPjn
Dの宣言を static var D:Number=0; にしたら出来ました~~。 ありがとうございました。
ASには関数ポインタに相当する機能はあるのでしょうか?
>>530 普通にできるよ。
function foo(str){trace(str);};
var bar = foo;
bar("hogehoge");
// this["bar"]("hogehoge");
532 :
Now_loading...774KB :2005/03/27(日) 19:34:11 ID:bHJ4fbT8
flashの同時発音は8音ですが、FIFOなのでFILOなロジックを作ってみたのですがうまく作動しません。 var sound_array = new Array(); var sound_i = 0; function fSoundControl(id){ var sound_name = "mySound"+sound_i++; this[sound_name] = new Sound(); this[sound_name].attachSound(id); sound_array.push(sound_name); if(sound_array.length >7){ this[sound_array.shift()].stop(); } this[sound_name].start(); } 上記のasだと和音にならず、単音で発音されてしまいました。 サウンドをFILOで発音させる方法はあるのでしょうか? どなたかご教授願います。
var sound_name = "mySound"+sound_i++; これじゃインクリされないだろ?される?
534 :
Now_loading...774KB :2005/03/27(日) 21:17:03 ID:bHJ4fbT8
535 :
Now_loading...774KB :2005/03/27(日) 23:28:12 ID:7jw2/kKI
100点以上だとAのムービーが流れて以下だとBが流れるようにしたいんですけど どうしたらよいですか? ムービークリップを設置しておくと両方とも表示されてるし あとムービーがループしないようにするにはどうしたらよいですか?
539 :
Now_loading...774KB :2005/03/28(月) 15:54:20 ID:H115svWD
Flash MX2004で初歩的な質問です。 デジタル時計を製作しているのですが、 月を英語で表示するにはどうすればよいのでしょうか? this.stop(); this.onEnterFrame=function(){ theTime=new Date(); theFullYear=theTime.getFullYear(); if (theFullYear<10){ theFullYear="0"+theFullYear; } theMonth=theTime.getMonth()+1; if(theMonth<10){ theMonth="0"+theMonth; } theDate=theTime.getDate(); if(theDate<10){ theDate="0"+theDate; } display=theFullYear+"."+theMonth+"."+theDate+"."; }; ↑現在の状況です。
すみません、 getURL("javascript:MediaPlayer1.controls.pause();"); を始め、MediaPlayerを操作する際に、ことごとくstopしてしまいます。 止めずに早送りしたり、一時停止したりは出来ないんでしょうか?
>>532 ActionScriptリファレンスガイド(MX2004のPDFマニュアル)
P702に書いてある。
-------------------------------------
Sound クラスのコンストラクタ
Player
Flash Player 5
シンタックス
new Sound([target])
パラメータ
target Sound オブジェクトを適用するムービークリップインスタンス。このパラメータはオプション
です。
戻り値
なし。
説明
コンストラクタ; 指定されたムービークリップの新しい Sound オブジェクトを作成します。ターゲット
インスタンスを指定しないと、Sound オブジェクトはムービー内のすべてのサウンドを制御します。
-------------------------------------
542 :
541 :2005/03/28(月) 16:19:30 ID:JEBioFIf
>>532 (続き)
つまり new Sound() する時に、それぞれ別のMCを、[target]として割り当ててあげれば
それぞれコントロールが出来るようになります。
動作確認してないけど、こんな感じかな?
-------------------------------------
var sound_array = new Array();
var sound_i = 0;
function fSoundControl(id) {
var sound_name = "mySound"+sound_i++;
createEmptyMovieClip(sound_name + "mc", sound_i);
this[sound_name] = new Sound(sound_name+"mc");
this[sound_name].attachSound(id);
sound_array.push(sound_name);
if (sound_array.length>7) {
this[sound_array.shift()].stop();
}
this[sound_name].start();
}
-------------------------------------
ところで、FILOってナンデスカ・・・?
>>539 Date.getMonth() で帰ってくるのは、0~11の値だから
英語の名前の配列を用意しておけばいいんじゃないでしょうか。
monthStr = ["JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"];
theMonth=monthStr[theTime.getMonth()];
こんな感じかな・・・。
544 :
Now_loading...774KB :2005/03/28(月) 16:42:47 ID:H115svWD
>>543 ありがとうございます。
さっそくやってみます!
>>542 >>522 じゃないが、
First In First Out
と、
First In Last Out
だったか
FIFOが先入れ先出し、
FILOが先入れ後出し、位のアレ
なんか久しぶりに見たな、この単語
546 :
Now_loading...774KB :2005/03/28(月) 22:18:54 ID:ZgJvV/YW
サウンド再生完了したら関数呼び出すやつ使うと 居場所(thisがどこをさすのか)がわからないんすけど・・・。 フレームに↓ this.LoadSound.onSoundComplete = function() { this.flag = 0; this.pt.text = "00:00"; //表示を初期化 this.seekbar._visible = false; //シークバーみえなく } thisがサウンドオブジェクトを指すのかと思いthis._parentとかにしてもだめでした。 _root使うのならもちろん大丈夫でした。 教えてくださいませ。
trace(this)汁
548 :
Now_loading...774KB :2005/03/28(月) 22:23:31 ID:ZgJvV/YW
Object
549 :
Now_loading...774KB :2005/03/28(月) 22:24:48 ID:ZgJvV/YW
あ、ちがった [object Object]って出ますた。
素朴な疑問なんですが。 たとえばtest1、test2、・・・というのの数字の部分を変数にして eval("test"+hensu).testFunction(); とかってよくやりますが、これと this["test"+hensu].testFunction(); ってやるのとでは実質的に違うんですか? あるいはどっちが正しいんですかね。
>>546 thisが付いていると、Object内を見にいくようになります。
(LoadSoundオブジェクトになるのかな?)
で、Object型(サウンドオブジェクト)には_parentが無いから、
this._parentだと何処にもいけない感じになる。
ちなみに、thisを外すとタイムラインを見に行くようになります。
デフォルト参照と、this参照が違うというやつです。
(下記URLはボタンについてだけど、内容的には近いと思う)
http://www.fumiononaka.com/TechNotes/Flash/FN0303004.html デフォルト参照はvalueOf()なんで、
valueOf().seekbar._visible = false とかになるのかな。
うまく説明できてないな、、、 申し訳ない。
552 :
546 :2005/03/28(月) 23:55:28 ID:ZgJvV/YW
ありがとうございます。解決しました。 Object型に_parentが無い なんかは初めて知ってためになりました。 もっと勉強して教える側になりたいものです。では。
553 :
551 :2005/03/28(月) 23:59:51 ID:JEBioFIf
554 :
& ◆3F/lUdNiiU :2005/03/29(火) 00:12:46 ID:g0TxlkzG
手作り!?わかりやすいんで、保存しときます。 アクションスクリプトって意外に難しいですね。 (では。とか言っておいてまだ居る罠
555 :
546 :2005/03/29(火) 00:14:09 ID:g0TxlkzG
↑554は私です。なぜか名前が化けました。しかも#が入ってたし・・・。
先入れ中だし
>>542 ありがとうございます!
早速試してみます。
初歩的な質問で申し訳ないのですが getURLでアンカーポイントへのリンクを試してみたのですが getURL("index.htm#1"); ←このように記述すると アンカーポイントがあるページを再読込して アンカーにジャンプしてしまいます ターゲットを _self とかにもしてみたのですが、症状はかわりません 常にページを再読込させずにアンカーにジャンプする方法とかありましたら 教えて下さい 制作環境は Mac:OSX(パンサー)でFlash MXを使っています 確認はWinのIE6.0、MacのIE5.2、Safari1.2で動作確認しました
"#1"
>>559 それも試してみましたが、ページごと再読込してしまいましたorz
flash geturl アンカー #で検索したらすぐ出てきたぞ
すいません。 誤爆しました。
質問です。flashMX one.swf AS System.useCodepage="true"; loadVariablesNum("text.txt",0); ダイナミックテキストを作成して変数 var1 に text.txt のテキストを読みこませる two.swf AS loadMovie("one.swf","target"); で、target に上の変数を読みこませたダイナミックテキストの swf ファイルを読みこませたのですが、空白になってしまいます。 one.swf 単独で見るときにはちゃんと text.txt の文章を読んでくれるのですが loadMovie で読みこませるとダメなようです。 text.txt の文章を読みこんだ one.swf を target に表示させる方法はないでしょうか。
パスが違ってくる。loadVarsつかいな。
トップにボタンを配置してそれに スクリプト on(press){ this._X=this._x+5;} とするとなぜかボタンだけではなくボタンを含めたルートにおいてある 背景ごと移動してしまいます。 一体、なぜなのでしょうか?
ボタンじゃなくてMCで
MCだと、on(press){が使えないばかりか、ボタンを複数配置したときに 一斉に反応してしまうんです…
何のこっちゃ。 とりあえずスレ違いぽいね。 ボタンの this と MCの this はレベルが違うとだけ言っておくか。 MCでも on(press) 使えるし、複数配置して一斉に反応ってのも訳わからぬ。 ASスレで聞くよりも初心者スレで聞いておくれ。
on(press)も使えました ボタンイベントだと読んだので使えないとばかり思ってました。 助言どうもです
ちょっとしたゲームを作っているのですが、 円い物と円い物がぶつかって跳ね返る動きというのは どのように記述すればできるのでしょうか? 円い物と平らな物の跳ね返りはできたのですが…( ´Д`) どなたか助言宜しくお願いします
物理1という教科書読むといいよ
>571 ビリヤードの理屈について説明してあるページをぐぐって探す。
ネイチャーアニメーション、桜の花びらがヒラヒラとランダムで舞い落ちるASを教えて下さい。
ぐぐれ
MX2004pro FlashLite 特定のキーを押したらあるフレームに移動するという アクションスクリプトはどう記述すればいいでしょうか? 参考にはなりませんがストップウォッチを製作中です
if( Key.isDown( ) )
(=゚ω゚)ノぃょぅ
いつもこのスバラシイ良スレにお世話になってるエロエロ大王と言う者でつ!
スレ違いなのを承知でカキコさせてもらうっす
オレが活動しているクソスレでAS2メインでゲームを作ってるっす
んで AS2に興味あるヤツやこれから覚えたいヤツがいたら一緒にやらないかい?
内容はクラス使うほどのモノでもないが勉強のためにと無理やり使ってる
さっき ある程度出来たゲームをうpしたので興味あるヤツはよろシコな!
LZHにクラスファイルをフォルダにまとめておいたっす
http://pc8.2ch.net/test/read.cgi/swf/1092654718/l50 スレ汚し失礼!
579 :
Now_loading...774KB :FLASH暦9年,2005/04/03(日) 00:28:36 ID:+HlSFK5I
ダイナミックテキストのマスクについて質問です MXを使用していて スコア表示に マスクをしたテキストを 使いたいのですが普通にやっても出来ません ぐぐって.setMaskを使えば出来ると書いてあったのですが やってみても出来ませんでした 具体的にはどう使うんでしょう テキストの入ったMC の名前 moji マスク用MC maskdesu どういう レイヤー構成で どういうアクションにすればいいのか 教えていただきたいです お願いします
どうも。 質問なのですが、たまに見る下記のコードはどのような処理をしてるのでしょうか? 自分を addListener するメリットとかあれば教えてください。 Mouse.addListener(Mouse);
addListenerはフォーカスに関係なく動作する
584 :
Now_loading...774KB :FLASH暦9年,2005/04/03(日) 19:12:17 ID:IzWjPYUv
585 :
Now_loading...774KB :FLASH暦9年,2005/04/03(日) 19:16:57 ID:rPSSXCPV
objectの中に何のプロパティがあるか調べるにはどうしたらいいですか? obj = {name:"papa",age:"50",hage:true....} のようにプロパティが入っているとして、 そのプロパティ名を取得する事が出来ないかと思って色々やってます。
586 :
Now_loading...774KB :FLASH暦9年,2005/04/03(日) 19:22:29 ID:IzWjPYUv
>>585 for (var name in obj) {
trace("myObject."+name+" = "+obj[name]);
}
オレも埋めこみにしてないのが原因と思ったけど、違うの?
多分、マスクする前の時点で表示されていない気がする。
>>584 ありがとうございます
新規でやったら出来ました
しかし 今作ってるものに組み込もうとすると
マスクが動作しません
何か条件があるのでしょうか??
591 :
590 :FLASH暦9年,2005/04/04(月) 00:10:37 ID:C52/pP2P
申し訳ないです 自己解決しました 今作ってるものだけ なぜかパブリッシュ設定が flash5になっていました すみません
592 :
584 :FLASH暦9年,2005/04/04(月) 00:20:45 ID:1fWX2+ZW
>>590 MovieClip.setMask()でやったの?
デバイスフォントを回転とか拡大・縮小させると表示させれなかった希ガス。
埋め込みでやったんなら回転、拡大・縮小もできたかも。
593 :
584 :FLASH暦9年,2005/04/04(月) 00:22:28 ID:1fWX2+ZW
一足遅かった。。。 逝ってきますorz
>>587 です
>>588 埋め込みじゃなくてもできます。
var textMc:MovieClip = (ダイナミックテキストを格納するMC)
var maskMc:MovieClip = (マスクとして適用させたいMC)
=> タイムライン上ではマスクじゃない。
で
textMc.setMask(maskMc)
すると別に埋め込まなくても、_sansとか_ゴシックとかでOK
595 :
582 :FLASH暦9年,2005/04/04(月) 03:23:15 ID:95WoqllQ
>>583 レスありがとうございます。
が、いまいち理解できていません。
例えば
Mouse.addListener(Mouse);
とした場合としなかった場合とでは具体的に何が違うのでしょうか?
596 :
583 :FLASH暦9年,2005/04/04(月) 10:32:39 ID:mWl80t+z
>>595 MCがボタンイベントも取れるようになったし、難しいことをやろうとしなければ
必要ないかもね。要するにマウスイベントを取れないオブジェクトに取れるように
させるためのもの。必要になったら思い出せば良いと思うよ。
597 :
Now_loading...774KB :FLASH暦9年,2005/04/04(月) 16:45:53 ID:Ga/+g7rQ
flashMX04 今書籍を参考にフラッシュ掲示板作成中です。 cgiファイルの方でContent-type: text/plainで出力して loadvarsオブジェクトで受け取ってそのまま適当な変数に出力したら 文字化け状態でした。(System.useCodepage = true;にしています。) ,区切りでログを保存しているんですが ,が%2cになってしまいます。 どうしたら文字化けを防げますでしょうか? お願いします。
unescape()
599 :
Now_loading...774KB :FLASH暦9年,2005/04/04(月) 17:22:52 ID:Ga/+g7rQ
>>598 うぉお出来た
こんなかんたんなことで出来るとは
ずっと悩んでたよ
何で俺の買った本にはこんなことすら書いてないんだ
とにかくものすごく助かりました。
ありがとうございました。
600 :
Now_loading...774KB :FLASH暦9年,2005/04/04(月) 20:54:40 ID:QkUo3hCO
602 :
Now_loading...774KB :2005/04/05(火) 07:59:15 ID:yK65Ohyn
MacのIEとNNはSetVariable動かないんすか?
動かなかったの?
604 :
Now_loading...774KB :2005/04/05(火) 10:52:11 ID:OsvwizoI
loadVariablesを使って外部テキストに記述した日付と実際の日付により 動作を振り分けたいのですがどのように書いたらいいのでしょうか? お願いします。
605 :
sp :2005/04/05(火) 13:10:15 ID:QEau7IOS
日付の差とか計算するんでしょうか?
getDate() if(baka == aho) { }
607 :
604 :2005/04/05(火) 15:04:04 ID:OsvwizoI
hogeテキスト中身はMonthA=4&DayA=5 で・・・下記をやってみたのですが onClipEvent(load){ newDay = new Date(); tuki = newDay.getMonth()+1; hiniti = newDay.getDate(); this.loadVariables("hoge.txt"); atama = MonthA; ketu = DayA; if (tuki == 1 and hiniti == 1) { gotoAndStop(2); } else if (tuki == 12 and hiniti == 24) { gotoAndStop(3); } else if (tuki == atama and hiniti == ketu) { gotoAndStop(3); }else {stop; } } 上手くいないんですよ・・・orz
dtObj.getTime()<Date.UTC(2005,04,05,0,0,0,0)
609 :
604 :2005/04/05(火) 16:54:49 ID:OsvwizoI
追記 xp Mxです。 テキスト中身は後で自由に書き換えて使用したいのです。
WINXP FlashMX2004Pro a.textに「あいう\uide4\7\24\87◇◇,えおかきく\34Th\3\26\7◇◇」 とある場合、「あいう,えおかきく」だけを配列としてb.textに表示 させる事って可能でしょうか?解釈としては、「1つ目の\以前の文字列 (英数字含む・文字数は決まっていない)のみ抽出したい」です。ご教示 よろしくお願い致します。
611 :
sp :2005/04/05(火) 17:54:53 ID:QEau7IOS
split関数で , \ の順に切って配列に入れてみるとか。
>>611 ありがとうございます。しかし、一つ目の\以前の文字列を抜く為にIndexOf
を使って「\」を検索すると、「\」がコード?として認識されてしまって
うまく抜く事ができません。何か良い方法がないでしょうかm(_ _)m
>>612 エスケープシーケンスと解釈されてるとか?
\は区切りに使わない方がいいかも
"\\"にするとちゃんとした\記号が出せる
>>614 盲点でした。\\で解決しましたです。ありがとうございました。
盲点っていうかヘルプにのっとるよ。
MX2004です。 ムービー右クリックで表示されるメニューを編集する際に、、 デフォルト項目の、「プリント」と「デバッガ」の間にあるような「線」を 引くにはどうすればいいのでしょうか?
618 :
Now_loading...774KB :2005/04/05(火) 23:10:01 ID:4zCmvz6i
>>617 ContextMenuItem.separatorBefore
ヘルプ参照。
619 :
617 :2005/04/05(火) 23:24:28 ID:CAlqcafQ
620 :
Now_loading...774KB :2005/04/05(火) 23:35:51 ID:e/mBDqZn
外部ホストの画像を読み込むにはどうすればよいですか?
621 :
Now_loading...774KB :2005/04/06(水) 00:52:33 ID:aMYGgo3G
鯖サイドでプロクシっぽいことやれば出来る。 言語は好きなの使え。 1. 外部ホストの画像を自分とこにコピる 2.コピッたら、MovieClip.loadMovie()とかでムービー内に読み込む 3.(゚Д゚)ウマー コピる時にjpeg変換とかすれば、gifでもpngでもプログレッシブjpegでもよめるようになってもっと(゚Д゚)ウマー
622 :
Now_loading...774KB :2005/04/06(水) 18:39:07 ID:JTPwiIFh
>>621 やっぱりそれしか方法ないのか。
マクロメディアも余計な機能付けてくれる
623 :
Now_loading...774KB :2005/04/07(木) 10:26:50 ID:X8/rq47J
すいません。フラッシュMX2004で質問です。 ムヴィークリップが現在play中かstop中か調べる方法ってありますか? ムービーが止まるタイミングで他の関数を動作させたいんですが。 oldFrame = MC._currentframe; if(oldFrame == MC._currentFrame){ trace("stop中"); } 上記のような方法で同じフレームが続いたらムービー停止中と判断するような スクリプトやってみたら、oldFrame取得とif文の間に 何か他の処理を入れるとうまく行くのですが、 入れないとムービー再生中でも同じフレームが二度続いたと判定されてしまい うまく行きません。 お願いします。
>>623 どういう処理に入れているのかわからないけど、
普通はこういう順番に実行するんじゃないかな?
if(oldFrame == MC._currentFrame){
trace("stop中");
}
oldFrame = MC._currentframe;
止まる処理側に書けばいいじゃん。自然に止まるMCなんて無いんだしさ。
>>625 でもMCのタイムラインにstop();って書いてたら別ですよね
だからそのstop()ってとこに一緒に処理をって意味だろ。 不特定のswfを読み込む仕組みなら別だけど?
628 :
623 :2005/04/07(木) 16:46:31 ID:X8/rq47J
レスどうも
>>624 それだと都合の悪いことがあってそれはむりでした。
>>625 MCにstop()は書くんだけど、
どうにかしてそれ以外のスクリプトを全部一箇所に
まとめようとしてたんだけど
もう諦めてMCに書くことにします。
>>628 都合の悪いってのは1つの変数をいろんなことに使いまわしてるんじゃないか?
そういう分離性の悪いスクリプトはそもそも良くないぜ。
タイムラインでstopさせたフレーム1~4にいくんですけど、 変数countを使って if(count<30){ gotoAndStop(1); }else if(count<60){ gotoAndStop(2); }else if(count<90){ gotoAndStop(3); }else if(count<120){ gotoAndStop(4); } みたいな感じで、countが150以下ならまたフレーム1、180以下なら2…という ふうに30区切りでgotoさせたいんですが、どう書けばいいでしょうか?? if-elseばかりやってると切りがないので計算させればいいと思いますが うまいのが思いつきません。 すみません、アドバイスください。
一定区間で区切るのはMath.floorと割り算。 処理が繰り返されるのは%を使うと上手く行く。
そのASだとPCが迷いそうな悪寒
質問はageでよろしいのでしょうか? シーン1直下に配置されているボタンをリリースしたら シーン2のフレームラベルAの上にある50というMCの中のxというフレームラベルを 指定するにはどのような表記をすればいいのでしょうか? シーン1直下に配置されているボタンはいまのところこんな感じです… on (release) { gotoAndPlay("シーン2","A"); } ここまでしかたどり着けませんでしたorz
とりあえず、今後のためにもシーンを分けずに作り直そう。
635 :
Now_loading...774KB :2005/04/08(金) 08:06:07 ID:rbyA9fCo
>>623 うまく行くわけが無い。
oldFrame = MC._currentframe;
この時点でoldFrameにはMC._currentFrameを入れてるのに、
その直後でoldFrameとMC._currentFrameを判定したらそりゃtrueだろうが。
都合が悪い理由も良く判らんが、下のようにすりゃいけるだろ。
oldFrame = nowFrame
nowFrame = MC._currentframe;
if(oldFrame == nowFrame){
trace("stop中");
}
636 :
Now_loading...774KB :2005/04/08(金) 08:20:10 ID:rbyA9fCo
>>630 var kugiri = 30
if((count%kugiri+1) == kugiri){
gotoAndStop((count+1)/kugiri)
}
フラッシュMX使っています。 シューテイングゲームなど、得点を競うようなゲームの場合に、 ゲーム終了時にスコアを表示し、スコアが基準を満たしている場合 (例えば5位のスコアよりも上回っていた場合など) スコアボードにリアルタイムで載せるにはどうしたらいいでしょうか? 暫く悩んでいたのですが、AS色々かいて試しているうちに だんだん混乱してきて頭マッシロになりました>< (試しに書いたASもマッシロになってしまったくらい混乱してますorz) そのせいで試したソースを貼れないので、質問するのも気が引けたのですが、 どうにもこうにも混乱から立ち直れませんorzz ヒントだけでもすごく助かるので、どなたかアドバイスお願いします。
>>630 gotoAndStop(Math.floor((count%120)/30)+1);
単純にこんなんで良くなくなくない?
640 :
Now_loading...774KB :2005/04/08(金) 11:31:55 ID:HPBFfh3N
mx04です。 セレクトボタンを作っています。 ボタンを押すとメニューがポップアップして そこにムービークリップを10個作って、 インスタンス名.onPress = function()で ボタンのようにしたのですが onPressがぜんぜん反応してくれません。 いろいろ試してみたのですがなぜだかまったくわかりません お願いします。
641 :
640 :2005/04/08(金) 11:33:36 ID:HPBFfh3N
追記 ムービークリップのonPressでボタンにしたのは ムービークリップのフレーム移動で10種類のボタンを作りたかったからです。 お願いします。
>>638 ランキング用の配列を用意。
上から順に現在のスコアと評価。
上回っていたら、そこに押し込む。
>>640 10個作るMCでtrace(this)、trace(this._name)してパスと名前を確認しれ
あるいは、ボタンになるMCの中にボタンの機能を置いておくとか。
押されたら、自身のインスタンス名を送るようにする。
this.onPress=function(){
_root.hoge(this._name);
}
線がツーっと動いていって構成される絵のアウトラインを形成する(説明下手ですみません)。 という表現がわからなくて進みません。いろいろと。 どうやったらできるんすかまぢで・・・・
>>645 名前さえも知らないんで、正確にぐぐることもできず・・・ってな感じなんです。
シェイプトゥイーン
>>647 ありがとうです。
わからなかったらまたきます。
649 :
648 :2005/04/08(金) 12:47:17 ID:meSwZmt6
見てないけどたぶん描画メソッドじゃね?
651 :
648 :2005/04/08(金) 13:04:53 ID:meSwZmt6
>>650 描画メソッド・・・・
例えば
●←という図形があって、その図形のアウトライン部分を線が描画していって、
○←を描ける。
わかるかな(´・ω・`)
これってその描画メソッドというのでできます?
652 :
Now_loading...774KB :2005/04/08(金) 13:08:36 ID:4nDXxfK7
これ単なるコマアニメじゃね?
と思ったら違うっぽい。 あとageすまんかった。
>>651 こんな?
x = 200;y = 200;r = 100;k = 0;//座標とか
lineStyle(5, 0x000000, 100);//線種
//最初の位置
moveTo(200+Math.sin(k)*r,200+Math.cos(k)*r);
//とりあえずタイマー処理で円周上に点描いてく
setInterval(function(){lineTo(200+Math.sin(k)*r,200+Math.cos(k)*r);k+=0.1;},50);
複雑な絵を書きたい場合には移動先の座標を細かく管理すればできるんじゃない?
あとはしらねー。がんばって。
655 :
648 :2005/04/08(金) 13:57:15 ID:meSwZmt6
>>654 うわ。。。むずかしそ・・・・
とりあえずスクリプトから覚えろってことですね・・・つじつまがあった気がします。
ありがとうございました。
がんばります。
>>648 がそんなに複雑な形状の物を作ろうとしているとは思えないのだが、
素直にマスクで表現できるのでは?
657 :
638 :2005/04/08(金) 16:55:23 ID:0nFJqq0A
>>642 さん
ありがとうございます!
夜にでも、教えていただいたことやってみます。
ありがとうございました~!
658 :
630 :2005/04/08(金) 20:22:06 ID:UqheJEJ8
636,639 ありがとうございました!
>>648 絵を描いてから少しずつ削っていって、最後にフレーム反転。
Win2000SvrSP4 FlashMX2004Pro です。 Flash上でカメラに接続すると 「許可」「拒否」のボタンが出るのですが、 その時に拒否のボタンを押すと、カメラが取得されないまま処理が終わっちゃいますよね? この後に再度カメラに接続しようとすると、接続できないまま処理が終わってしまうんですが これを何とか再接続する様に出来ないのでしょうか? それと、カメラ拒否した後のカメラの再取得時にカメラ拒否である事をActionScript上で認識出来ないでしょうか?
どうもこんばんわ。
仕事でこういう動きのmcを作らなければならなくなりました。
ttp://yugop.com/ver3/index.asp?id=17 はっきりいってどういう仕組みなのかわけわかりませんが、上司はこういうの普通にできるだろー的なテンションで言ってきます。
何かヒントでもあればどなたか教えていただけますでしょうか。もしくはどっかにclassが落ちてないでしょうか。
>>660 loadMovieしなおすとか、JSでページそのものをリロードさせるとか。
一回拒否したら、もう使わないってことなんだから、それでしつこく聞くのは、
ページかえるたびにでる広告ウィンドウと一緒で非常にうざい気がする
>>661 こんばんわ
その上司に聞け。
適当な擬似でよければ、回転と、移動する方向、力、摩擦力だけで作れる。
真面目にやると、重心、モーメント、と正直めんどくさい。
663 :
661 :2005/04/09(土) 05:02:25 ID:evOt1PRb
>>662 どうも。
上司はなんも知らんです。アホ上司なんでflashなら簡単に作れると思ってるくさいです。
適当な擬似で全然おkです。
>>663 まず、ドラッグできるようにする。
離されたときに、前のフレームとの位置の差をベクトルとする。
毎フレームごとに、0.98なりの値をベクトルにかけて摩擦としてスピードダウン
xyにそれぞれのベクトルを加算して移動。
値が0に近かったら0にして移動止める。
そこまで出来たら、
適当に重心とか決める。
移動ベクトルや位置から回転速度をでっち上げて、
毎フレーム加算で回転させる。
その程度なら物理のサイトを見ればなんとかなるぜ。 ポイントはその大きさの物体と見ずに 重心に重くて小さなボールがあるとしてやればいい。 ドラッグした点とから重心に紐が伸びてるイメージだ。
>>663 文字を上下に飛ばしたら消えたぞ ウワーン
上下にもワープ判定付けろモルァ
667 :
Now_loading...774KB :2005/04/09(土) 12:52:24 ID:li0y76DB
for(var name in object) のようにmovieclipのプロパティ名を調べたいのですが、 this.createEmptyMovieClip("MC",0) で生成し for(var name in this.MC) trace(name) for(var property in this.MC) trace(name) 等やってみたのですがダメでした。 プロパティを参照する場合、どうやって行えば宜しいのでしょうか? ※現状はプロパティ名を配列に入れて参照してますが、 もっとシンプルにしたいのです。
MCのプロパティは変数に見えて実は変数じゃないから(なんか内部処理があるっぽい) その方法で呼び出せないんだと思われ。 配列に入れてやるのが最もスマートじゃないかな 邪魔に感じるのならメソッドにして別に置いておくとか。 function traceProperty(mc){ // 処理 } あとはMCのプロトタイプをいじくってそういう機能をつけるか。
>>662 どうも。
結局はカメラ拒否の時にはポップアップで「プライバシー」の部分を自分で変えてくれ、という仕様でなんとかしました。
カメラ拒否を許可に変更するのは、当たり前ですがActionScript上じゃ無理っぽいですね
670 :
Now_loading...774KB :2005/04/09(土) 22:11:00 ID:45DaxF+3
>>668 なるほど、そうだったんですか。
ありがとうございます。
671 :
Now_loading...774KB :2005/04/10(日) 18:12:21 ID:tuuNh3Ms
先生、質問です。WinXP+MX2004Proです。 DataGridコンポーネント等で表示されるスクロールバーの 色を変更するには、どうsetStyle()で指定すればよいのでしょうか? DataGridインスタンスに直接"scrollTrackColor"プロパティを 指定してもダメなので、例えばルートのタイムライン上で _global.styles.UIScrollBar.setStyle("scrollTrackColor", "0x000000"); とやってもうまくいきません。どなたかご教授願います。
ボタン"broadband"というのを押したら、broad.swfというのをロードし、ロード次第、再生するという処理はどうすればできるのでしょうか? いま、ボタン"broadband"に以下のASを書いているんですが、うまいこといきません。 on(release){ this.loadMovie(broadl.swf); onClipEvent (data) { if (this.getBytesTotal()>0 && this.getBytesLoaded()>=this.getBytesTotal()) { this.gotoAndPlay("start"); } else { this.stop(); } } }
そりゃろうだろう
MCイベントの入れ子ですか・・・。
MCを1フレーム目に来たときX方向にいくらか動かし、 2フレーム目に来たときにMCの動きを止める。 また1フレーム目にもどってX方向にいくらか動かすような Scriptってどのように書けばいいのでしょうか?
onEnterFrame=function(){ if(unko_mc._currentframe==1){ unko_mc._x+=10;} }
ああ、ルートタイムラインが1フレーム目に来た時の話か。 ルートタイムラインの1フレ目に unko_mc._x += 10 ; とでも書いて、2フレ目には何も書かないで空フレームでも追加しておけば、 1→2→1・・・・ とループされて、1フレ目でだけ移動するかと。 もしそれで具合が良くないなら、なんで具合が悪いか書いた方が良いですよ。
unko_mcって、イタスギ。。。
うんこしてきます。
681 :
Now_loading...774KB :2005/04/12(火) 15:34:58 ID:T43xum7D
mx04、すいません。
flashBBS作ってるんですけど
下記のようにやってCGI呼ぶと
ダウンロード状態になるんですけど
どなたか教えてください。
sendVars = new LoadVars();
sendVars.data = data;
sendVars.send("cgifile","_self","POST");
http://www.kent-web.com/support/faq/faq1-2.html#7 ↑のにあるように
print "HTTP/1.0 200 OK\n";
これ入れてます。
今のところ自サバでのテストです。
お願いします。
682 :
681 :2005/04/12(火) 16:44:01 ID:T43xum7D
上のスクリプトでちゃんとdatファイルに データは書き込まれています。 loadの方はダウンロード状態にならないのですが なぜかsendの場合だけなってしまいます。 引き続きお願いします。
ちょい印刷についての質問です。 自分はMXを使っていて、書いたActionScriptの印刷で コマンドや関数などは色を付けたいのですが、FLASH MXの スクリプトエディタって、印刷機能付いていないですよね。 日本語に対応しているエディタでASの強調語句がカラー 印刷できる物で良いのありますか?
684 :
Now_loading...774KB :2005/04/12(火) 17:00:54 ID:WXHgQ/8J
IEのコンテキストメニューを flashで偽装したいのですが、可能でしょうか? たとえば貼り付けとかコピーとか。
686 :
Now_loading...774KB :2005/04/12(火) 18:36:40 ID:LNx2+obU
>>684 MX2004ならちょっと可能
>>686 Flashでクリップボードからの貼り付けって出来たっけ?
>>671 コンポーネントの見た目がドサッと入ったテーマっていうのが有るわけです。
そのテーマの中のMCが「オレがscrollTrackColorだから、setStyleで呼ばれたらオレの色変えてね」と宣言をしてる。
しかし、デフォで使用するテーマであるところのHaloテーマには「scrollTrackColor」っていう宣言がない。
「scrollTrackColorを変えるぜ!」って命令しても『そんなのないよ』と何も変わらない訳です。
Colin Moock knew the answer. Turns out, some styles simply won't work with the Halo theme.
http://www.person13.com/blog/archives/2004_02.html (ページ下の方、Component Styles参照)
このページが言うには「HaloにはscrollTrackColorがないからSampleテーマを使用しなさい」って
ことらしいんだが、いざSampleテーマを使ってみるとダサくって見てられない。
そういう訳で解決策としては、HaloテーマからscrollBarを持ってきて、上書きしてあげればいいんです。
説明するのが面倒なんでFLAファイル下記にアップしました。
(ヘルプのドキュメントへのテーマの適用を見ると分かるんだけど、要はライブラリに持ってくれば
対象のコンポーネントが上書きされるみたい)
./ja/Configuration/ComponentFLA/HaloTheme.fla から ScrollBar Assetsを持ってきて、
[ライブラリ] ScrollBar Assets/ States/ScrollTrackにスクリプト追加。
http://marmotfarm.com/cgi-bin/upload2/source/up63265.zip でもグラデとかなくなっちゃうんで、ScrollTrackを直接編集した方がよさげ。
FlashMX2004Pro WinXP キーボードの「Enter(13)」を押すのと同じボタンをFlash内に 配置したいのですが、可能でしょうか?ご教示お願いいたします。
690 :
けいた :2005/04/13(水) 18:20:51 ID:wOgU2AFW
今Listのチェンジイベントがうまくいかず困っています。 環境XP FLASH Pro2004 呼び出すファンクションにはListの現在の要素番号?? を与えたいと思っています。 ASファイルに↓の用に記述しているのですが。。。 よろしくお願いします。 for(var i = 0; i<Child_attri.length; i++){ ctr_name[i] = Child_attri[i].attributes["ctr_name"]; }; _root.ctr_List.setDataProvider(ctr_name); _root.ctr_List.setChangeHandler("onChange"); function onChange() { trace(ctr_List.getSelectedIndex()); }; 分かる方がおりましたよろしくお願いします。
>>690 MX2004だと、コンポーネントに対してaddEventListener("eventType", Target)で、
「もしeventTypeが起きたら、Targetを呼んでね。正確にはTarget.eventType()」って登録します。
function change() {
trace(ctr_List.getSelectedIndex());
}
ctr_List.addEventListener("change", this);
>>688 なるほど、標準のテーマでは無効だったのですね。
FLAファイルも参考になりました。ありがとうございます。
693 :
けいた :2005/04/13(水) 19:44:40 ID:wOgU2AFW
>>691 すいませんやってみましたが動きませんでした。
694 :
けいた :2005/04/14(木) 19:31:15 ID:+DuX7xyo
動きました。ありがとうございました。
695 :
Now_loading...774KB :2005/04/15(金) 01:30:09 ID:Bm8Tn8Bc
696 :
Now_loading...774KB :2005/04/15(金) 16:55:32 ID:N9XSiNSx
以下のようなスクリプトで絵かきFLASHを制作しています。 更に、直線ツールのような描画方法も追加したいと思っているのですが、 線をまっすぐに引くためのスクリプトが解りません。 教えていただけたらと思い書き込みさせていただきました。 どうぞよろしく御願いいたします。 XP FLASH MX2004 this.createEmptyMovieClip("view_mc",1); view_mc.lineStyle(3,0x000000,100); view_mc.drawFlag=false; view_mc.onMouseDown=function(){ this.drawFlag=true; this.moveTo(this._xmouse,this._ymouse); }; view_mc.onMouseMove=function(){ if(this.drawFlag==true){ this.lineTo(this._xmouse,this._ymouse); } }; view_mc.onMouseUp=function(){ this.drawFlag=false; };
697 :
Now_loading...774KB :2005/04/15(金) 19:20:36 ID:U0HNe6c/
計算方法の単純化で質問です。 ある数よりオーバーしたら数値をカットする計算なのですが、 現状は以下のようになっています。 valmax = 10 val = Math.floor(Math.random()*80) - 40 if(val > valmax){ val = valmax }else if(val < -valmax){ val = -valmax } これをもっと単純化する事って出来ますか? +と-で2度もチェックせずにすませたいです。
698 :
Now_loading...774KB :2005/04/15(金) 20:22:40 ID:rGPlogVL
valの値を -10 >= val <= 10 にしたいという事ですよね? valmax = 10 val = Math.floor(Math.random()*80) - 40 if(val > valmax){ val = valmax }else if(val < -valmax){ val = -valmax } だとvalの値が10又は、-10になる事が他の値になる事より多く発生しますがそれはいいのでしょうか。 val = Math.floor(Math.random()*20) - 10; ですでに絞り込みができると思いますがそういう事ではなく?
699 :
698 :2005/04/15(金) 20:24:38 ID:rGPlogVL
valの値を -10 >= val <= 10 にしたいという事ですよね? ↓ valの値を -10 <= val <= 10 にしたいという事ですよね? の間違い
>>697 あなたがどんなことをしたいのかよくわかりません
valmax = 10;
val = Math.floor(Math.random()*80)-40;
val = val>valmax ? valmax : (val<-valmax ? -valmax : val);
あなたのスクリプトと実行結果は同じはずです
-40~39の乱数を発生し、
10より大きければvalに10を代入
そうでない場合は-10より小さければvalに-10を代入
そうでない場合はvalは-40~39の乱数が入ります
これでよろしいでしょうか
>>700 >そうでない場合はvalは-40~39の乱数が入ります
-10~10の乱数になるのでは?
Math.abs(val)で比較すりゃええべさ
>703 >+と-で2度もチェックせずにすませたいです。 もし例外整数が出たのをすべて、+10にするなり-10にしてもいいなら これで二重チェックする必要はなくなるわけだが
706 :
700 :2005/04/17(日) 00:10:32 ID:su+v6aXF
>>698 のval = Math.floor(Math.random()*20) - 10;じゃあ満足ならないの?
MX2004をXPで使用しています。 ASでMCの色を制御するにはどうすればいいのでしょうか? お願いします。
colorクラスを使うのよさ
709 :
707 :2005/04/17(日) 11:55:22 ID:w5eYVrSs
そのcolorクラスはどうやってセットするのでしょうか? this.color = ○○
mycolor = new colorでcolorオブジェクトの出来あがり color,sound,xmlなどに関しては明示的にnewを使ってオブジェクトを作成しなければならない
711 :
705 :2005/04/17(日) 18:51:41 ID:NTv03omy
712 :
Now_loading...774KB :2005/04/17(日) 19:00:50 ID:y0HHF/U+
フレームをランダムに移動したいのですが gogo = Math.floor(Math.random()*3)+3; gotoAndPlay(gogo); だと3から5までのどれかに移動なのですが 3と5と8と9などばらばらのフレームにランダムに移動したい場合は どのようにしたらいいのでしょうか?お願いします。 xp Mxです。
if 使えばいいじゃん
>>712 gogo = new Array(3, 5, 8, 9);
gotoAndPlay(gogo[Math.floor(Math.random()*gogo.length)]);
なんだ、また、大吉が出ないおみくじか
|д゚)?
717 :
697 :2005/04/17(日) 21:23:39 ID:3lMQEo+r
中々時間が作れず返事が送れてしまいました。
申し訳ありません。
>>698 質問にした処理は、
乱数で発生させた移動地点に対する移動への
リミットを設ける為の処理だったので、
元の乱数でセーブとはちょっと違うんです。
>>700 詳細な説明つきでありがとうございます。
綺麗なコードですね…なるほどと思いました。
>>702 最初そのように考えて+-の処理が必要だと思い、思案していたのです。
例外整数に対してさらにチェックという手もありましたね。
みなさん、色々参考になりました。どうも有難うございます。
指定したディレクトリに、幾つファイルやフォルダがあるか 個数を、変数で取得することはFlashでは出来ないでしょうか?
うん。できないよ。でないとファイル構成抜き出すいたずらページできちゃうからね。フゥーハハー
亜ドベに買収されて・・・(ry
723 :
718 :2005/04/19(火) 00:37:47 ID:AkE3qnXE
>>719 >>718 レスどうもです。そうですか・・CGI勉強します。
FlashのloadMovie()で、外部ファイル(.swfや.txt)を読み込む時に、
「もし指定したファイルが無かった場合、特定の処理をする」ことは可能でしょうか?
普通なら何も起きないですが(出力ではloadMovieのパスのエラーが検出)、無いときは
指定したフレームに飛ぶ等。
やはりCGIでしょうか?
724 :
718 :2005/04/19(火) 00:39:07 ID:AkE3qnXE
725 :
681 :2005/04/19(火) 11:11:26 ID:Mh2ltKOu
var myCountVars = new LoadVars(); myCountVars.load(countCgi); myCountVars.onLoad = function (){ System.useCodepage = true; unescape(myCountVars); var cnt = new Array(); cnt = myCountVars.split("\&"); _parent.count = cnt[0]; } MX2004です。カウンターCGIを作って _parent.countに読み込みたいのですが、上記のやり方だとなぜかundefinedになります。 試しに _parent.count = myCountVars とすると一応読み込めてはいるのですが splitに問題があるのでしょうか? お願いします。
>>725 読み込まれているなら(゚з゚)イインデネーノ?
727 :
Now_loading...774KB :2005/04/21(木) 00:05:58 ID:0k8igxi2
環境=FlashMX2004,Win98SE 以下は「あるインスタンスをマウスでドラッグして、そのときの フレーム番号(変数:frame)を表示する。次に特定の領域(H1) に入ったらドラッグを解除し、動かしたインスタンスをそこに置く。 同時にフレームを1個進めてフレーム番号を表示する」 というスクリプトです。インスタンスは動けて領域H1にも置け るのですが、フレーム番号が表示出来ません。考えられる 原因何でしょうか? on (press) { this.startDrag(); frame=_currentframe; } on (release) { if (this.hitTest(_root.H1)) { this.stopDrag(); } this.nextFrame(); frame=_currentframe; }
>>727 _root._currentframeにしてみる
729 :
727 :2005/04/21(木) 00:46:06 ID:gq05mBqd
>>728 有難うございます。しかしながら、_root._currentframe では
表示できませんでした。試しに_parent._currentframe でもダメ
でした。
他の解決策はないでしょうか?
>>729 力不足でごめんなさい
traceしてみるとどうでます?
731 :
727 :2005/04/21(木) 01:58:52 ID:+xI42vAi
>>730 有難うございます。traceで確認できました。なお、this.nextFrame();
では次のフレームに行けず、_root.nextFrame(); ならOKでした。
732 :
Now_loading...774KB :2005/04/21(木) 11:10:23 ID:wjj5bGom
if文の条件(OR型)での質問です 元は if (A.hitTest(_root.H1)) {~} のように、インスタンスAが領域(H1)に重なった場合に~としていた if文で、これを発展させ、複数の領域(H1,H2,...,Hn) のいづれかに重なった場合を条件式として入れるにはどうすれば いいでしょうか?
orで繋げる。 if (A.hitTest(_root.H1) || A.hitTest(_root.H2) ...) {~}
H1側に処理を記述する。まあ、2,3個ならifでつなげてもいいけど。
flag=false; for(i=1;i<n+1;i++){ if (A.hitTest(eval("_root.H"+n))) {flag=true} } if(flag){ ~ } って感じかな。 STGみたいに、一つでも当たっていたらダメって場合は、 flag作らずに、玉当たっているよってやられに処理まわしちゃえばいいけど。
間違い。 if (A.hitTest(eval("_root.H"+i))) {flag=true}
WINXP MX2004Pro よろしくお願いします。 a.textに100と入力してボタンを押すと、 100×80%=80 80×80%=64 64×80%=51 51×80%=40 ・ ・ ・ と、「元の数字(100)に80%を掛けて、出た答えに80%を掛けて」を 0になるまで繰り返し、0になるまで(小数点以下は切り捨て)計算した回数 を出したいのですが、どう組んだら良いか分かりません。「forを使って、、、」 程度しか分からないこのアホめに、どなたかご教示いただけないでしょうか。 よろしくお願いします。
>>737 とりあえずこれをタイムラインに貼り付けてみれ
kaisuu = 1;
suuji = 100;
while (suuji>0) {
trace(kaisuu+"回目:"+suuji);
suuji = Math.floor(suuji*0.8);
kaisuu++;
}
cnt1=0; par=0.8; base=100; function r80kake(base,par) { cnt1++; var rtn=Math.floor(base*par); trace(cnt1+":"+base+"*"+par+"="+rtn); if(rtn>0)r80kake(rtn,par); } r80kake(base,par); なんとなく書いてみた。自動的に解放してるんかな。
741 :
Now_loading...774KB :2005/04/21(木) 19:24:01 ID:vx6TwifD
ムービークリップの回転速度を上げるボタンを作ってるけど、 ボタンを押してもオブジェクトの角度が変わるだけで、回転しない・・・ _rotation以外にもメソッドを書き込まないとだめなんですかね。
>>741 ヒント:this.onEnterFrame = function(){};
自分が管理しているネットショップにflashでショッピングカートをつけたいのですが、 レンタルしているサーバーがCGI等に対応していないため、困っております。 で、質問ですが、「ボタンによって注文内容と個人情報(名前住所)をメールとして送信させる」ようなことを actionscriptで実現することは可能でしょうか。 よろしくお願いいたします。
>>744 ということは、物凄い勢いで頑張れば可能なわけですね。
ありがとうございました。
746 :
Now_loading...774KB :2005/04/21(木) 20:08:50 ID:9GGrBlzO
どなたか教えてください。flash初心者です。 flash4.0、mac使用です。 エキスパートモードに切り替え可能なのでしょうか? また可能ならどのように設定したらよいのでしょうか?? _rootなどの設定をしたいのですが全くわからなくて困っています。
747 :
732 :2005/04/21(木) 20:17:56 ID:vzHXPrDx
>>733 , 734, 735, 736
ありがとうございます。735さんの方法でやってみます。
ところで、STGとは何の略でしょうか?
>>746 4はWINで使っていたがエキスパートモードとかそういうのは無い
もうわすれたぽ
>>746 初心者ならFlash4を使うのは止めよう。
携帯電話向けにしか利用価値がありません(これもすぐに変わると思う)
750 :
Now_loading...774KB :2005/04/21(木) 20:52:25 ID:DjVOpXLB
>>748 >>749 返答ありがとうございます。
では、_rootなど設定したい場合は設定できる方法はないのでしょうか??
しかも、macか・・・ paraflaとか薦めようと思ったのに。
>>750 ルートは「/」だよ。数式エディタから直接入力できる。
マニュアルの184ページあたり読んでみて。
MX2004プロ WINXP 時間の計算をしたいのですが、一歩も進まないまま行き詰まってしまいました。 hoge1=4月21日21:00(現在の時間を取得) hoge2=24時間 hoge3=20分 hoge4=12分 この全部を足した時間 4月22日21:32 を出す計算の方法がわかりません。 どなたか教えて下さいませ。
754 :
Now_loading...774KB :2005/04/21(木) 21:40:24 ID:vvaSxbtJ
HPを開くと音楽が流れて、停止ボタンを押すと止まるようなASってどうしたらいいですか~?
商と余りで計算すれば?
735さんの方法 for(i=1;i<n+1;i++){ if (A.hitTest(eval("_root.H"+n))) {flag=true} ・・・ ・・・ では出来なかったので、代わりにflagを使わず while文でやっています。
>>753 ①hoge1の21:00を00:00から経過した時間(秒)に変換 (*3600する)
②hoge2,3,4も秒単位に変換
①+② が 24*3600より大きければ、日にちが一日増える
と言う方法しか思いつきません。
>>756 まぁ、シリアル値として全て秒に統一するのは決して悪い方法じゃないと思われるが。
Hours Minutes が別変数になってるのか、それとも規則が無いのか、それによっても煩雑さは変わるがなぁ。
基本的に、大量に処理するなら秒に変換がいいとおも。
newMinutes = (nowMinutes+hoge3+hoge4)%60
foo = Math.floor(nowMinutes+hoge3+hoge4)/60
newHours = (nowHours+foo)%24
bar = Math.floor(nowHours+foo)/24
は大量の処理を考えるなら、うーむ・・・って感じでスッキリしない。
var f_date = new Date(); var r=f_date.getTime(); //差分をミリ秒にするdtxxxxを変える var r2=(dthour*3600+dtmin*60+dtsec)*1000; f_date.setTime(r+r2); これでよいのでは?
760 :
Now_loading...774KB :2005/04/22(金) 02:16:22 ID:Yb+1P3vF
ボタンBを押すとインスタンスAがフレームアクションで 点滅するASは B.onRelease=function(){ A.onEnterFrame=function(){ A_visible = A!_visible; } } で良いでしょうか?
A._visible = !A._visible;
762 :
760 :2005/04/22(金) 02:40:13 ID:Yb+1P3vF
763 :
Now_loading...774KB :2005/04/22(金) 07:45:08 ID:2tM6JiIy
760の延長です。環境=OS:Win98SE,ソフト:FLASHMX2004 フレームアクションで、iをカウントしながら(onReleaseは無しで) インスタンス Ai=A1,A2,・・・,An を順次点滅させるため Ai.onEnterFrame = function(){ Ai._visible=!Ai._visible; } としたところ、奇数のiでは点滅しましたが、偶数のiでは インスタンスそのものがステージから消えてしましました。 if文を用いて偶数のiでもAiが無理やり点滅するようコードを 書きましたがダメでした。 解決策がありましたら宜しくお願い致します。
>>745 ちょっと笑った。そういう解釈になるんか。
SWFって、クライアントサイドのプログラムだから普通に無理です。
せいぜいgetURL("mailto:sage?subject=hoge1&body=hoge2")
で内容入りの新規メールが立ち上がるぐらいか。
>>763 ステージにA1~Anまでが置いてあるってことかな?
それで、それを順番に_visible=falseにしたい(_visible=falseになるMCは常に1つ)
// 最初にカウント用変数を定義
var count = 1;
var countMax = 30;
// 毎フレーム_visibleを変更していく
this.onEnterFrame = function() {
// 現在のカウントのMCの_visibleをfalseに
this["A"+count]._visible = false;
// 面倒だからもし居たら~で、前回のMCの_visible=true
if (this["A"+(count-1)]) {
this["A"+count]._visible = true;
}
// カウントアップして次のターゲットに・最後まで来てたら最初に
count++;
if (count == countMax) {
count = 1;
}
}
なんかきたねぇスクリプトだな・・・
外してたらスマンっす。
>>745 htmlを読み込んで
swfで解釈させれば商品の名前と画像出すくらいはできるが面倒。
cgiの仕様が微妙に変わったりしたら修正しなけりゃいけなくなるし。
メールを出す機能がswfではないので、
いったんどこかのCGI用意してデータ受け取って
そこからsendmailしなきゃならない。
cgiをそのまま使うつもりが、またcgiを用意しなきゃならなから本末転倒
ついでにswfで住所などのデータ送信するのは、結構危険。
767 :
Now_loading...774KB :2005/04/22(金) 16:24:54 ID:7R9xoUDR
追記: やりたいことが、なんか違う気がしてきた。 ①ステージにA1~Anが置いてある ②Anは1番目から順番(毎フレームごと)に、点滅を始める(そして点滅し続ける) // 最初に数を定義 var count = 1; var number = 20; // Aの数 // thisは、Anが置いてある場所 this.onEnterFrame = function() { // AnのonEnterFrameで、自分の_visibleを変更する // このfunctionの中では、this = An になるので、注意 //(thisは実行時に決定されるため) this["A"+count].onEnterFrame = function() { this._visible = !this._visible; } count++; //最後まできたら、削除 if (count == number) { delete onEnterFrame; } }
WINXP MX2004Pro タイピングゲームを作成し、それに時間を表示させる為に簡単なデジタル 時計をつけました。で、時間表示用のテキストボックスをムービークリップ にし、↓ASをムービークリップの1フレーム目に書いて動作させてるのですが、、 t = new Date(); h = t.getHours(); m = t.getMinutes(); s = t.getSeconds(); Clock.text = String(h) + ':' + String(m) + ':' + String(s); 時間が経つにつれ、動作が重くなってるような気がします。メインタイムライン のonEnerFlame内に書いてみたのですが、あまり変わってないような、、、 書く場所によって、動作が重くなったりするのでしょうか?
タイピングゲームを作ろうとしていて、 タイプミスするとは何事だ! →○onEnterFrame
varをつけれ
771 :
763 :2005/04/22(金) 18:21:54 ID:IS0zSrJa
>>765 , 767
有難うございます。1番目の方(765)が目標に近いので
これでやってみます。
昨日flashのみでショッピングカートを作ることはできないかと質問した無知男です。 結局みなさんにレス頂いたように、flashだけでは無理なようですので、CGIを使うことにしました。 CGIを扱うのは初めてで、今日一日格闘したのですが、なかなか難しいです。 よろしければ、ショッピングカートを作るにあたって参考になる書籍を教えていただけませんでしょうか。 因みに今サイトはオールflashで構成されており、そこに組み込むような形にしたいと思っております。 よろしくお願いいたします。
>>772 パール勉強した事ないなら
サンプルCGI探して書き換えればいいさ
自分で作ろうとするならくれぐれもサーバーに迷惑かけないでね
ウィンドウズでparlって動くの?
植木さんの赤い表紙の本がサーバーサイドスクリプトとの連携について まとめてあったと思う。結構前の本でうろおぼえだけど探してみたら?
775 :
Now_loading...774KB :2005/04/22(金) 19:01:34 ID:pvQmA4BO
mx2004です。 cgiの変巣を読み込みたいのですが print "data=OK"で出力して vars = new LoadVars(); vars.load(cgiName); vars.onLoad = function(){ hennsuu = vars.data; } これでundefinedになるんですけど いろいろ試したんですが、原因がわかりません やり方が間違ってるんでしょうか? どなたかお願いします。
onLoadの定義→loadの順番に書き換えて、 あと、hennsuu = this.data; かな?
>>772 えーとだな。
個人情報漏らしたりで損するのは自分だから、
見栄とかつまらないところで無理にFlash化してどうするのよと
送信されるデータが暗号化されていないのはご存知?
>>773 プロバイダの提供してるサーバーにはapacheが入ってます。
>>774 植木さんですか。探してみます。
>>777 やはり暗号化は大事ですかね。
今はメールで取引をしてるのですが、それよりも危険性が増すものなのでしょうか。
Flash MXの質問です。 ScrollPaneコンポーネントのスクロールバーの色を変えたいんですが、 どのように書けばいいんでしょうか? あと、ScrollPaneの枠の色の変え方もお願いします。
非常に初歩的だと思うのですが、解決法が分からず、質問させてください。 ボタンインスタンスにon(press)でgotoAndPlayを指定し、フレーム移動させたいのですが、 フレームジャンプの際、変な謎の音がします。 よく聞いてみたところ、どうやらジャンプ先のフレーム前に設定した音が、 ジャンプの瞬間、同時再生されてしまっているようなのです。 (例えば、goAndPlayを51フレームに指定すると、 ジャンプした瞬間、1-50フレーム中のサウンドが全て同時に再生されてしまいます) 全く原因が分からず、困っています。 対処法などご存じの方がいましたら、アドバイスお願いしたいです。 よろしくおねがいします。
782 :
780 :2005/04/22(金) 21:02:16 ID:4Izgwi3m
>>781 ムービークリップインスタンスで指定しています。
それをシーンのフレームに貼り付けて再生するようになっています。
>>776 できました。ありがとうございました。
5時間はハマってました。
助かりました。
>>780 mysound.start(0,1);
こんな感じでやってる?
785 :
780 :2005/04/22(金) 22:11:28 ID:4Izgwi3m
>>784 非常に短い音をSEとして配置している為、その音の再生にはスクリプトを使用せず、
ライブラリに読み込んだものをレイヤー上に直接配置しています。
じゃあスクリプトを使用する事をお勧めするよ
>>788 すみません。
htmlページ上にあるhoge.swfをクリックすると、所定のflashムービーに、
hoge.swfのDATA=以下が渡る、というアプリケーションがありまして、
そのhoge.swfをflashムービー上に移植したいのです。
しかし、DATA以下の引数がうまく渡らず、困っております。
上記のコードではflashパラメータ(flashvars)が2つありますが、
flashムービー上でうまくパラメータを渡す方法は無いものでしょうか。
790 :
780 :2005/04/24(日) 09:55:39 ID:I8sMOfPj
全てスクリプトで記述したところ、見事解決しました。 どうもありがとうございましたm(_ _)m
>>789 html上にFlashAとBがあって
FlashBにFlashAを読み込ませたいということですか?
それとも、FlashAからFlashBに変数を送りたいと言うことですか?
また、何のためにDATA=以下を送っているのでしょうか?
他人の作ったもんパクって読み込んでるやつに答えてあげることないっしょ。
ネトゲの不正やってるアホだな
794 :
Now_loading...774KB :2005/04/24(日) 17:49:10 ID:DRU8WWY3
質問させてください。
http://www.gac.jp/article/index.php?stats=question&category=19&id=8932&command=msg にある、
onClipEvent(load){
this.ins_name = this._name;
}
on(press){
_root.hantei = this.ins_name;
}
onClipEvent(enterFrame){
if(_root.hantei == this.ins_name){
this.gotoAndStop(2);
}
else{
this.gotoAndStop(1);
}
}
このスクリプトに、マウスでロールオーバーした時の動作を追加するには、
どのようにしたらいいのでしょうか。
1フレーム目が標準状態、2フレーム目がロールオーバーした状態、
3フレーム目でボタンを押した状態のようにMCを作成したいと思っています。
どこに追加をすればいいのかがわからなくなってきてしまいました。
本当に初歩的なことだと思うのですが、よろしくお願いします。
795 :
Now_loading...774KB :2005/04/24(日) 19:24:07 ID:XFNIeCos
水玉(インスタンス名:mark)が時間を追う毎に2つづつ に(2のn乗)分裂していくASを書いています。 環境はWin98SEのFlashMX2004です。 現段階では <フレーム1> this.stop(); KX = 18; //隣接するための水玉の直径 KY = 18; D = 2; //深度 <フレーム2> _root.mark.duplicateMovieClip("mark"+D, D); //深度Dに複製 deg=2*Math.PI*(1-2*Math.random()); //角度の計算 eval("mark"+D)._x =mark._x+KX*Math.cos(deg); //複製した水玉の座標 eval("mark"+D)._y =mark._y+KY*Math.sin(deg); mark=eval("mark"+D); //(↑)新しい水玉のインスタンス名もmarkとする //これにより、同名だが座標の違うインスタンスを作ろうとした D+=1; //深度を下げる <フレーム3> gotoAndPlay(2); //繰り返し用 としましたが、新しい水玉は必ず前の水玉の隣に1個しか出来ず、 目標の2のn乗個の複製ができません。どなたか、このようなアル ゴリズムを含むソースをご存知ないでしょうか?
Dの値をトレースして確認してみ。たぶんずっと2だよ。 Dの値は_rootとか、_globalとかに保存すればいいんでない?
ループサウンドをフェードインさせるにはどうすればいいのでしょうか? 環境はMXです。
せっとボリュームをタイムライんにいっぱい置く
>>794 on(rollOver){trace("rollover");}
800 :
795 :2005/04/25(月) 08:08:22 ID:hB//AuRw
(水玉が2のn乗に分裂していくAS)
>>796 確認しましたが、Dは1づつ増加しこれに関しては問題はありません。
ググりましたが、今のところ「水玉が2のn乗に分裂していくAS」は
見つかりません。どなたかご存知でしたら、宜しくお願い致します。
>>800 //_rootのタイムライン
var D = 0;var MAX_D = 500
function segmentMC(){
var D = ++_root.D
if(D>MAX_D){delete this.onEnterFrame;return;}
var x = Math.random()*300;var y = Math.random()*300
this.duplicateMovieClip("mark" + D,D,{_x:x,_y:y,onEnterFrame:segmentMC})
}
mark.onEnterFrame = segmentMC
_rootにインスタンス「mark」があるとして、ベースはこんなかな?あとは好きにして。
802 :
800 :2005/04/25(月) 11:58:29 ID:oaFGTvoE
>>801 ありがとうございます。これでやってみます。
タイムスタンプからDateオブジェクトを生成する方法ってないでしょうか?
>>803 タイムスタンプをパースしてコンストラクタにぶち込むしか無さそう
805 :
803 :2005/04/25(月) 16:45:39 ID:dJKVMOUu
orz やっぱそうっすよね。。 ガリガリとパースします、アリガトウ。
お前らスクリプト組む時流れ図とか書いてる?
>>806 書かない
大規模なもの作るときも書いたことない
アルゴリズムからだめっぽいですが、 特定のフレームを再生で通過すると、貼ってあるダイナミックテキストのカウンターが設定しただけ加算されるというふうにしたいのですが 5フレ目通過で3、カウンタが上昇、34フレ目で16上昇、という風に・・・ どのようにASを組めばいいのでしょうか。
>>806 ちょっと複雑なのは紙でチャート作ったりする
>>808 ダイナミックテキストに変数設定してフレームスクリプトで変数に値を入れれば?
>>806 裏紙にメモする程度
(それもプログラムのフローっていうよりGUI決めるため)
MXでスクリプトを書いているのですが初歩的な質問させてください。 ライブラリにある画像(png/jpg等)をムービークリップに配置したいだけなのですが 外部画像ファイルならloadMovie()、ライブラリにあるシンボルならリンケージを 指定してattachMovie()で可能でした。 ライブラリにある画像ファイルをシンボル化しないで読む方法はあります?
ないっす。
やはりないっすか。 全部シンボル変換します orz ありがとうございました。
学校の課題研究でFlashでゲームを作ることになった。 なかなかおもしろいね。これ。
816 :
Now_loading...774KB :2005/04/26(火) 23:40:40 ID:Tfn3uyji
MXでつくってます this.onEnterFrame = function(){ … } とするとうまくいっても、一度関数をはさんだら一回しか実行されなかったりします。 this.onEnterFrame = f_kansu(); function f_kansu(){ … } この挙動の違いはどこだら来るんですか?
>>816 上はenterframeでその後の処理ブロック内が実行される
下は下記のように書くと上と同じように動く
function f_kansu() {
…
}
this.onEnterFrame = function() {
f_kansu()
};
下のthis.onEnterFrame = f_kansu();はf_kansuを実行してonEnterFrameに実行するから1回しか実行されない
this.onEnterFrame = は関係ないって事ね
いやいや、カッコが要らないだけだと思うんだ。 this.onEnterFrame = f_kansu(); ↓ this.onEnterFrame = f_kansu;
this.onEnterFrame=f_kansu; じゃいけないの?
820 :
816 :2005/04/27(水) 00:01:20 ID:njStY+ML
なるほど、分かりました ありがとう
821 :
816 :2005/04/27(水) 00:05:32 ID:Tfn3uyji
後で変数の受け渡しが必要になると思うので
>>817 でやらせてもらいます
ASでモーショントゥイーンのイージングをいじる事ってできますかね?
823 :
Now_loading...774KB :2005/04/27(水) 08:12:19 ID:U+n/SZgf
>>822 無理。そもそもASにモーショントゥイーンという概念は無い。
ただし、イージングと同じように加減速する計算を行っての
モーションは可能。
変数aにいくつ改行が入ってるかを調べる方法を教えてください
>>825 split("\n")してlength-1とか
827 :
826 :2005/04/27(水) 16:38:06 ID:3GR6u+Ir
やっぱループで一個一個検索した方が早いかも
>>825 こんなのはどう?
a.length-a.split("\n").join("").length;
829 :
828 :2005/04/27(水) 17:50:57 ID:ru7Fedmy
ちょっと勘違いしてた。826で全ての場合にOKだね。
830 :
Now_loading...774KB :2005/04/27(水) 20:22:32 ID:c/331TFc
(たぶん配列を使うと思いますが) 1~100の数字のグループがあったとき、これらに対してある数字を 適当に打ち、それがこのグループに入っているかの判定ASはどの ようになるでしょうか? 例えば 54を入力→true 150を入力→false
num = 54; trace(1<=num&&num<=100);//trueになる num = 150; trace(1<=num&&num<=100;//falseになる
832 :
ガイ先生 :2005/04/27(水) 20:46:40 ID:o3/w7RQJ
きし団のワンナイカーニバルのフラッシュを作ってください! お願いします!!
function xserch(grpAry,inputNum){ found=false; for( i in grpAry){ if(grpAry[i]==inputNum){ found=true; break; } } return (found); } aa=[1,2,3,4,5,6,7,8,9,10,11,54,2568,800,157]; num=150; trace(num+"=>"+xserch(aa,num)); num=54; trace(num+"=>"+xserch(aa,num)); こういう感じでよいのかな。取り違えてたらごめん。
>>832 それが違法かどうかも解らない屑に作る奴がいるか
死ねやガキ
>>832 ヤターできたよ!
trace("わんないかーにばーるほっほー♪");
見事だ
837 :
830 :2005/04/27(水) 23:57:40 ID:PsmvE1aT
>>831 , 833
すみません。最初の質問が間違っていました。
「1~100の数字のグループがあったとき」
は正しくは
「1~100の範囲にあるランダムな数字群(1,7,19,25,54,66,・・・)
があったとき」です。
つまりこのような数字群で、
54 → true
150 → false
の判定を行いたいと思っています。833さんの方が理想形に
近いですが、実際に判定は可能でしょうか?
838 :
833 :2005/04/28(木) 00:03:21 ID:3/Zuovw7
839 :
830&837 :2005/04/28(木) 00:59:43 ID:0/vyEiCM
(日本人ですが日本語に苦労していますw) ここでのランダムな数字群とは、random()を用いて発生させたもので 予めAS欄に存在するものではないです。そこで10個の乱数ならば for(i=1; i<=10; i++){ grpAry[i]=Math.random()による整数乱数 } と配列に格納する部分を加え、833の方法で判定しようと思います。 言葉足らずですみません。 ※1~100までの数字の乱数当てゲームだと考えて頂いて結構です。
840 :
Now_loading...774KB :2005/04/28(木) 08:39:15 ID:nSlQIrLq
初心者の質問ですみません。FLASH MXです。 for (i=1; i<=3; i++) { this.attachMovie ("pic001Movie", "pic001Movie_"+i, i); pic001Movie_1._visible = false; pic001Movie_2._visible = false; pic001Movie_3._visible = false; }; 上の部分にある pic001Movie_1._visible = false; pic001Movie_2._visible = false; pic001Movie_3._visible = false; を i を使って一文にまとめましたが pic001Movie_+i._visible = false; では上手くいきませんでした。基本的なことと思いますが 修正してください。
this["pic001Movie_"+i]._visible = false;
842 :
Now_loading...774KB :2005/04/28(木) 09:26:42 ID:nSlQIrLq
本当は配列に入れてやって処理する方がいいんだろうけどね~
ついでにこういうやり方を知っとくと今後役立つかも。 for (i=1; i<=3; i++) { newMC = this.attachMovie ("pic001Movie", "pic001Movie_"+i, i); newMC._visible = false };
乱数当ての件、解決しました
質問です。 removeMovieClip()を実行したときに呼ばれるイベントってありますか? onUnloadはちょっと違うようだったもので。 ムービークリップ内でsetInterval()でタイマを作った後始末をやりたいのです。 removeMovieClip()を呼ぶ直前に処理コードを書くのでもいいんですけど それだとremoveMovieClip()を呼ぶ個所に全部書かなきゃで面倒だしバグの 原因にもなりそうなんですよね。 ActionScript2.0でもデストラクタって見あたらないような気がするんですが 無いのかな・・・ 環境はMXですがMX2004でないと無理ならMX2004にします。
onUnloadでいいと思うけどなあ そのインスタンスってどうやって配置してんの?
>>847 インスタンスはattachMovie()で配置してます。
情報を出し損ねてすみません。stop()でフレームは全部止めてます。
マニュアルによるとonUnloadは「ムービークリップをタイムラインから
削除した後に表示される最初のフレームで呼び出されます。」
となっているので、フレームを止めている為に呼ばれないのかな。