ActionScript 誰かが物凄い勢いで解答するスレ 17
1 :
Now_loading...774KB :
2007/08/18(土) 08:48:49 ID:g0sVH2IC
3 :
Now_loading...774KB :2007/08/18(土) 13:40:00 ID:+E7xJx7d
Flex 2 (ActionScript 3.0)で、縦書き表示したいのですが、何か方法はあるでしょうか? Flash 8では、静的テキストならプロパティの変更で縦書き表示が選べたのですが… よろしくお願いいたします。
windowsXP FLASH8 です。 ムービークリップに onClipEvent (load) { if (_root.変数1 == true) { this. gotoAndPlay("A"); } if (_root.変数2 == true) { this.gotoAndPlay("B"); } } と記述して動作しているのですが同じ内容を記述するムービークリップが 多くなりそうなのでfunctionにすることにしました ↓rootタイムラインに記述 function 名無し() { if (_root.変数1 == true) { this. gotoAndPlay("A"); } if (_root.変数2 == true) { this.gotoAndPlay("B"); } } ↓ムービークリップに記述 onClipEvent (load) { _root.名無し(); } では動作してくれません。。。。。 どこが問題なのでしょうか。。。。。orz
>>4 thisが違うんじゃない?
function 名無し(mc:MovieClip){
mc.gotoAndPlay("A");
//他は略
}
呼ぶときは
_root.名無し(this)
flashでホームページを作っています。 各アイコンのボタンをMCにして、マウスが近づくと大きくなるようにしているんですが 数が増えてしまいCPU負荷が予想以上に多くなってしまいました。 対策として、アイコンのエリアより大きいサイズの透明のMCに onClipEvent (load) { Iconflag = true; } on (rollOver) { Iconflag = true; } on (rollOut) { Iconflag = false; } と書き。アイコンのMCに onClipEvent (enterFrame) { if (Iconflag == true) { xm = _parent._xmouse; ym = _parent._ymouse; span = Math.sqrt(xm*xm+ym*ym); if (span>100) { mcScale = 80; } else { mcScale = 80+(span-100)*-20/100; } this._alpha = this._xscale=this._yscale=mcScale; } } とやってみて負荷は下がったのですがアイコンの拡大縮小が滑らかではなくなってしまいました 原因があれば直していきたいのでぜひ教えてください
>>6 円型のMCの半径100ピクセル範囲にマウスがあったら
その距離に合わせてサイズを変えるという事かな。
on(RollOver)イベントが発生するのは「MCとの距離が80以内の(重なっている)時」
本来は「100ピクセル以内に入ったらサイズ変更する」はずなので
そこが上手く処理できていない。
上手い解決策かは分からないけど
MCの中に半径100の円を作って背景色と同じにするか(他のMCと重なるかも)
入れ子のMCにしてonClipEvent(load){_visible = false}
で、見えなくすればいいかも。
しまった、自分の質問忘れてたorz MCの存在をチェックする時の質問です var Mc:MovieClip = _root.MC; とルート上のMCを変数に割り当てた後 MC.removeMovieClip(); で削除後、 Mcの変数を使って存在をチェックします。 「if(Mc == ??)」の「??」にあたるものが分からず 今は「if(Mc._x == undefined」というように内部のプロパティを見て判定しています。 この「??」またはMcを利用して存在をチェックするにはどうすればいいのでしょう。 教えていただきたいです。
>>8 下記でどうでしょう?
var mc:MovieClip = _root.mc;
if (mc === undefined) {
trace("mc 無いよ");
}
//出力結果 mc 無いよ
>>9 回答ありがとうございます。
しかし、その方法だと上手くいかないみたいですorz
こちらで試した処理
trace("START");
attachMovie("mc", "mc1", 1);
var Mc:MovieClip = _root.mc1;
trace(Mc);
Mc.removeMovieClip();
trace(Mc);
if (Mc === undefined) {
trace("undfined");
}
if(Mc == ""){
trace("空白");
}
trace("END");
<出力>
START
_level0.mc1
END
改行なのか、undefinedなのか・・・
getInstanceAtDepth()を使うと、その深度にMCがあればMCへの参照が 無い場合はundefinedが返るので、スマートさにかけるような気がしますが これで判定するというのもひとつの手ですかね。 trace("START"); attachMovie("mc", "mc1", 1); var Mc:MovieClip = _root.mc1; trace("Mc = " + Mc); Mc.removeMovieClip(); trace("Mc = " + Mc); if (Mc == undefined) { trace("undfined"); } if (Mc == "") { trace("空白"); } if (Mc == null) { trace("null"); } if (getInstanceAtDepth(1) == undefined) { trace("mc無いよ"); } trace("END"); <出力> START mc = _level0.mc1 mc = mc無いよ END
<出力>以下は下記に訂正します。 <出力> START Mc = _level0.mc1 Mc = mc無いよ END
trace(Mc instanceof MovieClip); とか。
14 :
6 :2007/08/19(日) 10:09:23 ID:xj1FghBM
>>7 レスありがとうございます
なんというか、マウスの反応エリアにポイントが乗ってない時には
enterframeの処理を休止させるような良い方法があればいいんですけど。。。
空ボタンでマウスエリアを作って変数の受け渡しでon/offをしてみたのが
”>>4”の状態なんですけど
これだと、マウスをmcに近づける速度が速すぎると
空ボタン反応→mc拡大が急になりぎこちなく見えるし
mcから急に離すと、mcが縮小する前にイベント休止になってしまい、
中途半端な大きさで止まってしまう状態です。
かといって、空ボタンのサイズを大きくすると意味無いし。。。
もう脳みそ、溶けそうっす
updateAfterEvent();
環境はMEでFlash6を使っています。 画質が低のとき、低の文字に印がつくようにしたくて「画質選択」と言うスプライトに onClipEvent (enterFrame) { if ( _quality = low ) { this.gotoAndStop(1); } if ( _quality = medium ) { this.gotoAndStop(2); } if ( _quality = high ) { this.gotoAndStop(3); } } と、ASを書いたのですが、印が低、中、高とぐるぐる回るだけです。 オプション─オプション画面.png ←この画像に低中高の文字あり 画質選択┬低.pdr フレーム1 ├中.pdr 2 └高.pdr 3 if ( _quality = low )の部分がいけないのでしょうか?
>>11 ,12
MCの深度を調べる方法ですか。
確かにこの方法で調べられると思うのですが、
その深度に新たに別のMCが作られるとアウトですよね。。。
すいません、質問には含めてなかったんですがやりたい事では↑がありえてしまうのでorz
>>13 ありがとうございます。
色々試した結果、判定処理も負荷が余分にかかることなく実行できました。
回答いただいた方、ありがとうございました。
>>14 ひとまず急に離した時に大きさが中途半端なのは以下のソースでなんとかなるかと
if (Iconflag == true) {
// 処理
} else {
this._alpha = this._xscale=this._yscale=80;
}
毎回設定してるからちょっと気持ち悪いけど・・・。
急に近づけた場合はon(RollOver)の実行タイミングだから
前見たく常に判定させるかくらいしか・・・
>>16 ifの判定はif(_quality == low)とかになると思う。
後、lowが文字型で文字入ってるならいいけど、
if(_quality == "HIGH")で文字比較する。
>>18 御回答ありがとうございます。
==を使えばいいと分からなかったとき
if(_quality = "high")
と書いてみたら画質が高に固定されたから困った
前スレ982,985です(BSキーのキーコード) 「キーボードショートカットを無効」にチェック入を入れるにはどうすれば良いでしょうか? Flash8では、 編集 → キーボードショートカット でそれらしきものが出ますが、そこから 先が分かりません。
21 :
Now_loading...774KB :2007/08/19(日) 15:26:23 ID:9/7tACGE
x 1000 y 500 内のステージ上でマウス、カーソルの位置に合わせてオブジェクト(ボタンなど)のx位置が変化する、単純なマウスアクションを作りたいですけど。 x位置に制限をつけるやり方、どなたか教えてください。 例えばそのオブジェクトをステージの中央(例えば x 500)に配置して、マウス位置 x 0 (画面左ぎりぎり)の時はそのオブジェクトの x位置を400に、 反対に右いっぱい(マウス位置x1000)の時は x位置 600 という、400〜600までの制限をつけたいんですけど、どうAS書けばいいのか教えてください!
>>21 完全に算数的な動作ですなw
1000-0:600-400 = 1000:200 = 5:1
だから、マウスの座標とオブジェクトの座標を5:1の関係
で動かせば良いのでは?
つまり、マウスの移動量*0.2=オブジェクトの移動量 で、マウスの座標>1000
なら、オブジェクトの座標=オブジェクトの座標(繰り返し代入)とか
23 :
Now_loading...774KB :2007/08/19(日) 15:53:16 ID:9/7tACGE
>>22 挑戦してみたんですが、なかなかうまく動かず↓
もしよければ具体的にどう書いたら、ちゃんと動くのか書いてもらえませんか?
すみませんずうずうしくて↓
>>23 数学の勉強をやり直すのをオススメするよ
まずは制限とか考えずに、とりあえず動くように作ってみたら?
25 :
Now_loading...774KB :2007/08/19(日) 16:04:20 ID:9/7tACGE
>>24 ありがとうがざいます。
一応動かすことはできるんですが、今の書き方のままですと
一生カーソルに付いてくるので↓
なんとか制限を付けられないかなと。
すみませんド素人で。
>>25 どうしても駄目なら、FlaファイルごとUpしたら?
あと、いちいちAgeなくても良い。
>>20 ムービープレビューしたときのメニューのどこか。確か[制御]
>>26 “マウスの座標とオブジェクトの座標を5:1の関係
で動かせば良いのでは”
大変失礼ですが、具体的に書いてもらえないでしょうか?
大物が来たなw
>>28 マウスの座標をとれてるなら、x座標なら
(オブジェクト)._x = 400 + (マウスのx座標)/5;
でいいんじゃないのー?
>>27 ありがとうございます。BSのキーコード確認できました。
ちなみに、これでEnterキーも確認できまた。
33 :
Now_loading...774KB :2007/08/19(日) 16:38:53 ID:LNQddBb7
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) テキストフォーマットで質問です。 ある文字列の特定の区間をイタリック(斜体)にするにはどうしたら良いでしょうか? ASとしては、on (release) で text1 = "見れない、保存したい、flashを作りたいはスレ違い "; text1_fmt = new TextFormat(); //新規TextFormatを生成 text1_fmt.italic = true; text1_ins.setTextFormat(text1_fmt); //テキストインスタンスtext1_insに反映させる text1全部を斜体にすることは出来ましたが、区間(例えば5文字目から10文字目) を指定する方法が分かりません。 Selection.setFocus(text1_ins); Selection.setSelection(5, 10); を使うと、単に指定した区間がハイライトされた状態になります。 どうしたら良いでしょうか?
text1_ins.setTextFormat(text1_fmt, 5, 10);とか
あ、2.0なら引数のフォーマットとインデックス逆かも
>>35 有り難うございます。やっぱフォーマットが後ろで、
text1_ins.setTextFormat(5, 10, text1_fmt);
でOKでした。
37 :
Now_loading...774KB :2007/08/19(日) 19:41:30 ID:LNQddBb7
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) while文中のif条件文で質問です。 あるテキスト文中の処理で、そのテキスト文の終端に文字位置が来たら 終了(break)するようにしたいのですが、終わりません。 ASはon (release) に fmtPo2 = 0; //文字位置パラメーター txt2_len = txt2.length-1; trace("txt2.length= "+txt2_len);//長さは632と表示 while (1) { if (fmtPo2>500) {//500で終了させるのは可能 break; } //ここに処理 fmtPo2++; } と書いて実行すると、これは正常に終了するのですが、本来の動作のために if (fmtPo2>500) → if (fmtPo2>txt2_len) //終端でbreak とすると、閉ループに入ったようになり終了しません。 どうしたら良いでしょうか?
39 :
37 :2007/08/19(日) 21:32:32 ID:LNQddBb7
>>38 そうです。
if (fmtPo2>500) {
break;
}
が
if (fmtPo2>txt2_len) {
break;
}
になりました。
今まで、変数の大小で判定した際にこんなことは無かったのですが・・・
40 :
6 :2007/08/19(日) 21:48:01 ID:xj1FghBM
今日一日いろいろやってみまして空ボタンに
on (rollOver) {
//省略
}
で変数を取得させてenterFrameを一時停止させる方法に
おかげさまで目処が立ちました。
>>14 でのぎこちなく動く。という原因は収縮するmcの中にネストしていた
ボタンのせいで空mcのエリアに穴が出来、そのため空mcがrolloutと
判断してenterFrameを一時停止させていたためでした。
対応として、ボタンに
on (rollOver) {
Iconflag = true;
}
を追加して、ボタンのエリアも変数flag取得エリアとすることで、
多少、スマートではないものの、CPU稼働率を80%からエリア外にマウスがある時には
4%にまで落とすことが出来ました。
いろいろとアドバイスありがとうございました。
>>39 fmtPo2>txt2_lenがtrueと評価されているなら
breakされるから無限ループにはならない。
42 :
37 :2007/08/19(日) 23:52:32 ID:6FwBMnZF
>>41 レス有り難うございます。原因が分かりました。
if (fmtPo2>500) → if (fmtPo2>600) → if (fmtPo2>610)
→ if (fmtPo2>620) → if (fmtPo2>631)
とすると、if (fmtPo2>610)まではOKでそれ以降は不可でした
(if (fmtPo2>615)はなんとか可)。
while文中の処理として、特定の部分を太字化していたのですが
元の文字列txt2の末尾にそれがあるもののそこで終わらず、再び
先頭の目的以外の文字列も太字化されていました。
つまり、最後を通り越して先頭に戻り、また最後を通り越して・・・
の閉ループになっていたようです。
対策として、if (fmtPo2>txt2_len-nnn) というように、txt2の最後の行
の文字列数分nnnを引いた数以上で判定させました。
ActionScript3.0はJavaに似てる、って聞いて飛んできたのですが JavaアプレットをActionScriptにすぐ移植できるぐらいなんでしょうか? C++ → Javaアプレットへの移植ぐらいだと助かるんですが。
JavaとAs3.0の両方に精通していれば楽に移植できるでしょう どちらも中途半端な場合は悲惨な結果になるでしょう
>>44 ありがとうございます!
希望が出てきたので本格的にActionScript勉強してみます
やっとアプレットから逃げ出せそうな予感が
単純なものなら Java→AS2でも割と簡単に移植できるよ。
>>45 でもJava程柔軟かって言われるとそうでもないから、かなりの確率でがっかりすると思う
// NetConnection オブジェクトを作成する : netConn = new NetConnection (); // ローカルストリーミング接続を作成する : netConn.connect (null); // NetStream オブジェクトを作成し、onStatus() 関数を定義する : netStream = new NetStream (netConn); // NetStream ビデオフィードを Video オブジェクトに割り当てる : this.VideoWindow_mc.my_video.attachVideo (netStream); // バッファ時間を設定する : netStream.setBufferTime (5); // netStream.onStatus = function (infoObject) { if (infoObject.code == "NetStream.Buffer.Empty") { hyouji = "データのフロー中断中"; } else if (infoObject.code == "NetStream.Buffer.Full") { hyouji = "バッファが満たされました"; } else if (infoObject.code == "NetStream.Play.Start") { hyouji = "再生開始"; } else if (infoObject.code == "NetStream.Play.Stop") { hyouji = "停止"; } else if (infoObject.code == "NetStream.Play.StreamNotFound") { hyouji = "FLV が見つかりません"; } }; このソースで「netStream」はどこに収納されているのでしょうか? ローディングバーにて onClipEvent (enterFrame) { // 読み込まれているパーセント分メーターを進める this.gotoAndStop (Math.floor (_root.netStream.bytesLoaded / _root.netStream.bytesTotal * 100)); } とかいてあるのですが、ローディングバーの反応がありません たぶん_root.netStreamのパスのせいだと思うのですが。
>>48 拾ってきたのか書籍のサンプルのかわからんが、完成されている
ソースの一部分をコピペされてどうなのと言われても困る
ActionScriptで同じディレクトリのテキストファイルは読み込めるようですが バイナリファイルも読み込めるんでしょうか?
色々調べてURLStreamでreadByte、readIntなどを使って読み込んでいけることが 分かりましたが、読み込むことができるファイルがSWF、TXT、GIFなど限られている ようなので、例えばJPGにデータを詰め込んでおく・・・とか?
日本語でおk
フレームアクションの変数を、シンボルにリンケージしたクラスから参照するのってどうやるの? _root nt=10; .as class myClass{ function myClass(){ trace(nt); }}
_rootに書いたなら_root.ntじゃね?
>>50 一番手っ取り早いのは loadVariables() を使う方法。
「Flash MX ActionScript 実践技&ウラ技大全」(C&R研究所)ナツメ社 p144
「Flash ActionScript 逆引き大全550」(ITフロンティア 著)秀和システム p132
>>55 ありがとうございます!
さっそく逆引き大全を買ってみます
fuse kit の勉強がしたいのですが 詳しく解説しているサイトか書籍はありませんか?
58 :
Now_loading...774KB :2007/08/23(木) 07:06:18 ID:lEsqcOve
FLVファイルからデータベース接続って可能ですか? 外部ファイルを読み込ませてつかっていたのですが 外部ファイルの更新頻度が高いのでDB化したいのですが・・・
>>58 FLVはビデオファイルなので無理
swfからならphpやcgiを介せば可能
60 :
58 :2007/08/23(木) 19:30:51 ID:lEsqcOve
あ。。swfからです。。。汁 できるのですねーありがとうございました!
しる?
62 :
Now_loading...774KB :2007/08/23(木) 19:50:41 ID:lEsqcOve
× 汁 ○ 汗
onClipEvent(load){ Mouse.hide(); this.startDrag(true); } 上記をイベントハンドラメゾットで記述する場合はどうするのでしょうか? _root.pointer.load=function(){ Mouse.hide(); _root.pointer.startDrag(true); } としてみましたがダメでした・・・。
質問です。 SWFからASを抽出できるソフトってあるんですか? あったら教えてください。宜しくお願いします。
>>63 インスタンスにpointerってのがあるの?
それなら、ターゲットパス一覧にも有りそうだが。
66 :
Now_loading...774KB :2007/08/24(金) 15:43:52 ID:qG0MHHfC
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) 親MC消去で質問です。 親MC(oyaM)の中に子MC(koM)を配置して、koMを押すとoyaMが(koMも一緒に) 消えるようなASを書いていますが消えてくれません。 koMに書いたASは下の通りです。 on (release) { this._parent.removeMovieClip(); } どうしたら良いでしょうか?
>>66 親MCっていうのは、あらかじめタイムラインにおいてあるムービークリップ?
それとも、attachMovieとかでスクリプトから追加したムービークリップ?
前者だとしたら、それだと消えないと思うよ。
FLASH MXを使用しています。 _rootに置いた、timeという名前とmyMCという名前のインスタンスがあります。 timeの方では onClipEvent(enterFrame){ dateobj = new Date(); } onClipEvent(enterFrame){ hour = dateobj.getHours(); } というスクリプトを書き、myMCの方では onClipEvent(load){ aaa = _root.time.hour; trace(aaa); } のようにしているのですが、trace(aaa)でundefinedとなってしまいます。 timeの中でtrace(hour)をしたら15のように出力されるのですが・・・ これは何が原因だと考えられるのでしょうか?
>>67 レス有り難うございます。
設定は前者の方です。ということは消えませんね・・・・ 別の方法を探します。
>>68 loadした時にはまだenterFrameのイベントは実行されてないからでは?
loadをenterFrameにしてtrace()結果の2行目以降に値が表示されるなら、そうだと思う。
>>68 onClipEvent(enterFrame){
hour = dateobj.getHours();
trace("hour= "+hour);//確認用
}
一杯出てくるけどw
>>70 ありがとうございます。
trace()を繰り返してみると、2行目以降に値が表示されました。
同じフレームでの実行だったので、どうやらmyMCの方が先に実行されてたようです・・・。
他のプログラミング言語でいう、Sleep()とかwait()みたいな関数って用意されてないのでしょうか?
>>69 depthが1以上なら消えるはず。attachしてもdepthが1以下なら消えないはず。
74 :
69 :2007/08/24(金) 18:28:02 ID:MJ2AZXwL
サウンド(ボタンアクション)について質問です。 ボタンアクション(再生ボタン) on(release){ SoundA.stop(); SoundA = new Sound(_root); SoundA.attachSound("AAA"); SoundA.start(); } //ライブラリ内のサウンド(識別子"AAA") このScriptの書き方ですと、再生ボタンを押すとサウンドの重複は回避できますが 再生ボタンを押すたびにサウンドの頭からスタートしてしまいます。 出来れば、再生中は再生ボタンを押しても反応しない(無効)書き方にしたいんですが。 停止ボタンを押すことによって再び再生ボタンのアクションを有効にするやり方を教えてください。
>>75 Sound.onSoundComplete = function(){
再生するフラグ = true;
}
>>75 いちいちattachしないでstopとplayだけしてればいいんじゃないの。
>>76 さっそくの回答ありがとうございました。
これをどこに記述すればいいのですか?あとフラグとはなんですか?
すみません素人で。
>>78 真面目かつ良識的にに書くと、flagとはif文などで
勃起(準備OK) = true
萎縮(今はダメなの) = false
>>78 どこに書くかはプログラム全体を見ないとわからない。
>>77 ご回答ありがとうございます。
もしよろしければ、一時停止ボタンの作成を教えていただたけませんか?
>>81 //再生再開
on(release){
SoundA.start(SoundA.position/1000, 0)
}
//停止
on(release){
SoundA.stop()
}
JavaからActionScriptに移ってきてJavaに似てるって喜んでたんですが、 もしかしてActionScriptでは画面の部分更新(領域を指定して画面に転送)は できないんでしょうか? addChildの処理は重いみたいなので画面サイズのスプライトの中で処理して 部分更新なんて考えてたんですが無理なのかな・・・。
スプライトって何?
paraflaかも
>>83 画面サイズのBitmapData用意してそれを直接書き変えれば?
というか、addChildで重いって、どんな物を作りたいの?
>>83 ムービープレビューで右クリ、再描画領域を表示をしてみそ
>>84 Sprite AS3.0で使うクラス
>>83 毎回グラフィック用のSpriteを作ってaddChildしてるとか?
うろ覚えだがENTER_FRAMEのイベントで
Spriteの中のオブジェクト(RectとかCircle)を操作したら勝手に部分再描画になったような。
>>83 ビットマップの話なのかベクターなのかはっきりしてから質問した方がいい。
90 :
Now_loading...774KB :2007/08/25(土) 14:08:12 ID:LbNq99D/
MCが、0〜30フレームまでの間でrollout時に、逆再生させたいのですがわかりません。
91 :
83 :2007/08/25(土) 14:31:11 ID:jah+z/np
すみません、明らかに勉強不足のようなので出直します。
addChildでかなり時間がかかるという記事を見たので、部分更新が出来る
か気になって質問してしまいました。
>>86 さんの書き込みを見て希望が出てきたので、まずはしっかり勉強します。
>90 mc.onRollOver = function() { this.onEnterFrame = function() { this.prevFrame(); }} これを基本にいじってみる
>>91 希望が出てきたというか、
>>87 や
>>88 の言ってることが全てだとオモ
レイヤー構造と、全てのオブジェクトが固有のタイムラインを持てることを知ればいい
>>93 でも
>>91 の言うこともなんとなく分かる。
AS3.0始めた頃は
「SpriteにDrawして書く」
「MovieClipをClassにしてattachMovieみたいに使う」
「JCanvas使ってJavaみたく描画メソッド作る」
くらいの3パターン、どれがいいのか・・・と迷ったもんだ。
今でも処理効率で言えばどれが一番なのか分からんしね。
再描画領域指定できそうな3つ目かなと思ってたりするけど・・・
一度テストしてみようかと思った。雑談すまそ。
その3つの選択肢なら使い分け用途がかなりはっきりしてるから迷うまでもない。 ビットマップなんていつでもコンバートできるんだから処理によって変換すりゃいいし。
AS3.0で導入された可変長引数を別の関数に渡すにはどうしたらいいんでしょうか? Cのように sprintf("%d: %s", 1, "リンゴ") で「1: リンゴ」を返すsprintfに可変長引数を 渡したいのですがどう渡していいのか分かりません。 現在は10個までとして以下のようにしてしまっています。 public function Trace(format:String, ... args):void { trace(sprintf(format, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9])); }
>>97 他の関数に渡すとかいう時点で、可変長引数使う意味ないだろw
99 :
Now_loading...774KB :2007/08/26(日) 18:56:54 ID:VDOPw4zH
Fla6 AS1.0書き出しです。 ムービークリップをドラッグして投げられ、マウスを放すとだんだん減速して止まるようなスクリプトを書いています。 そこで問題です: ものすごい速さでマウスをドラッグしてリリースするとstopDragが効かず、MCがマウスに張り付いたままになってしまう。 かといってreleaseのほかにonDragOutも付けるとものすごい速さでマウスを動かすとdragOutが反応してしまい マウスを離さなくても飛んでいってしまう。 MCに書いているスクリプトは下記です。
onClipEvent (load) { stat = 0; } onClipEvent (mouseMove) { updateAfterEvent(); } on (press) { stat = 0; this.startDrag(false); } on (release) { this.stopDrag(); stat = 1; x2 = _x; y2 = _y; speedx = (x2-x1); speedy = (y2-y1); } onClipEvent (enterFrame) { x1 = _x; y1 = _y; if (stat) { _x += speedx*2; _y += speedy*2; speedx = speedx*0.9; speedy = speedy*0.9; } }
改行が多くてERRORになるので分割しつれいします。 statは現在の状態を示す変数で、0のときは何もしていないかドラッグ中、 1の時は惰性で飛んでいる状態を示しています。
一定間隔でマウスボタンが押されているかどうかを判定すればいいんじゃね?
103 :
99 :2007/08/26(日) 20:04:06 ID:VDOPw4zH
>>102 なるほど。。。
マウスに追随する透明のMCをつくってそれがhitしてるか
enterFrameで判定してやってみます。
104 :
99 :2007/08/26(日) 20:28:56 ID:VDOPw4zH
むー。うまくいきません。 領域外に出たとき「マウスが押されていない」というのをどう判定すればいいものか。。。
105 :
99 :2007/08/26(日) 20:59:14 ID:VDOPw4zH
>>98 printf()系に渡すんなら意味があるんじゃないか?
C言語ならva_listを使うんだけど。AS3でどうやるかは知らん、すまん。
>>99 話もどしてしまうけど。。。
>releaseのほかにonDragOutも付けると
releaseOutsideは試した?どちらかというとこっちじゃないか?
108 :
99 :2007/08/27(月) 00:01:42 ID:/tJVCQPd
>>107 releaseOutsideなんてあったんですね・・・
超基本的なことでしたね。解決しました!ありがとうございます!
AS3.0について質問です class A { public staic function test1(){ trace("test1"); } } class B extends A{ static function test2(){ trace("test2"); } } こんな感じにAを継承したBというクラスがあります このtest1とtest2を実行した所 test2は問題ないのですがtest1に関して以下のようなエラーが出ます。 未定義である可能性のあるメソッド test1 を、静的型 Class の参照を使用して呼び出しました。 エラー内容がいまいちピン来ず、ヘルプを呼んでも直せませんでした。 間違いのある箇所を指摘していただきたいです。
追記 実行方法は B.test1() B.test2()を実行しました。
111 :
Now_loading...774KB :2007/08/27(月) 20:35:46 ID:/CIW+tvt
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) loadMovieで読み込んだ画像のサイズを取得するにはどうすれば良いでしょうか? ASとして以下をボタンアクションon (press) 内に書いています。 this.stageM.loadMovie(name1+".jpg");//MC:stageM(300*300)に読み込む trace("wide="+this.stageM[name1+".jpg"]._width); 目的JPGは200*200のサイズですが、これだと wide= undefined が返ってきます。
classBに static function test1(){ A.test1() } がないとエラーになんじゃないかなそれは。
>>111 moviecliploaderのonloadinitをヘルプで調べるんだ
読み込み開始後すぐにはそ見込み後のサイズは取得できないはず
>>112 継承してもBからはAの静的関数は実行できない仕様、と捉えて良いのでしょうか
AS2.0と同じように扱えると思っていました、解答ありがとうございます。
115 :
111 :2007/08/27(月) 21:13:41 ID:/CIW+tvt
>>113 早速のレス有り難うございます。ヘルプを読み、ましたが
「ロード対象クリップの先頭フレーム上のアクションが
実行されたときに呼び出されます。」
の意味が分かりません。別の表現だとどうなるのでしょうか?
>>115 「完全に外部ムービーが読み込まれ、画面に表示され、幅や高さなどをスクリプトから取得できる
準備ができたら、このイベントハンドラに指定しておいた処理が実行されます。」ってこと。
つまり、このイベントが起きる前に幅や高さを取得しようとしても、まだ読込中なのでundefinedになるってこと。
イベントハンドラって何?ってのはがんばって勉強してくれ、としか言えない。
>>116 さんきゅうです。引き続き、やってみます。
とりあえず、画像は表示されます。
(連投すいません) MC:stageMのイベントハンドラとして this.onLoadInit = function() { trace("-OK-"); }; を書きました。JPGの読み込みが終了したら出る筈なのですが、 5秒位待っても -OK- が出ません。
>>118 onLoadInitはMovieClipLoaderクラスのリスナーだから
そのASでは何秒待っても-OK-はでません。
ヘルプでMovieClipLoaderを調べるんだ。そしたら例が載ってるから。
>>119 度々ありがとうございます。
ヘルプと本を見てrootのイベントハンドラとして下の様に書きました。
myJpg = new MovieClipLoader();
mcListner = new Object();
mcListner.onLoadInit = function(stageM) {
trace("-OK-");
};
myJpg.addListener(mcListner);
相変わらず画像は出ますが、まだOKが出ません。
重ね重ね申し訳ありません。間違いをご指摘願います。
>>121 画像を読み込みたかったんじゃないの?そのASは何を読み込んでるの?
ヘルプに載ってる例をまるまるコピーすればいいと思うんだけど。
あと試すときはローカルじゃなくてweb上でね。
>>121 あ、ごめん画像は出んだ。
web上で試すときはtrace()使えないからテキストフィールドとかに出力。
>>122-123 一旦話をまとめたいと思います。
目標: MC(stageM)にロードしたJPGの大きさを取得したい(最初は横幅のみでOK)
流れ:
this.stageM.loadMovie(name1+".jpg");//MC:stageM(300*300)に読み込む
※これは可能
↓
MovieClipLoader.onLoadInitイベントリスナーを使って画像情報を取得したい
rootのイベントハンドラとして:
myJpg = new MovieClipLoader();
mcListner = new Object();
mcListner.onLoadInit = function(stageM) {
trace("-OK-"); //動作確認でOKを出す
};
myJpg.addListener(mcListner);
↓
しかし、このOKが出ない。
改めて、問題点のご指摘を願います。
>>124 myJpg.loadClipが無いんじゃない?
試すときはローカルじゃなくてweb上で。
>>125 有り難うございます。幅が取得できました。
関連ASは以下の通りです。
myJpg = new MovieClipLoader();
mcListner = new Object();
mcListner.onLoadInit = function(stageM) {
trace("-OK-");
trace("wide= "+stageM);
//
ok = "-OK-";//テキストフィールドokに出力
wide = stageM._width;//テキストフィールドwideに出力
};
myJpg.addListener(mcListner);
on (press) {
myJpg.loadClip(name1+".jpg", stageM);//MovieClipLoaderクラス用にloadClip()
}
Web上の動作を推奨されていますが、ローカルでも wide= 200 と、JPG
の横幅が得られました。
重ねて御礼申し上げます。
よろしくお願いします。 winXP/FlashCS3/AS2.0です。 mainMCがクリックされた際、 mainMCの中にsubMCを複製したいです。 MCの中にMCを複製する事は可能ですか? mainMCに下記を記述してみましたがMCは複製されませんでした。 on (release) { _root.mainMC.duplicateMovieClip(_root.subMC,"subMC_d",dep); } ※depは複製されたMCの通し番号が入ります どのように記述すればMCの中にMCを複製できるのでしょうか。
>>127 _rootにsubMCがない
MCにsubMCという名前がついていない(プロパティ)
生成するMCの名前が同じ
気になるのはこんなところ。
129 :
Now_loading...774KB :2007/08/28(火) 23:10:41 ID:NsBwdnrq
FLVを再生時に、再生している途中で、 また頭から再生したいという場合は、どのような記述を すれば実現できるのでしょうか? 現在、ボタンに以下のようなスクリプトを記述しているんですが 反映されません。 ムービーの再生が終了すると反映されます。 宜しくお願いします。 ボタン// on (press) { my_FLVPlybk.play(); } //FLV再生命令(フレームアクション) import mx.video.*; my_FLVPlybk.autoPlay = false; my_FLVPlybk.contentPath = "test.flv"; var listenerObject:Object = new Object(); listenerObject.ready = function(eventObject:Object) { my_FLVPlybk.seekSeconds(0); my_FLVPlybk.play(); }; my_FLVPlybk.addEventListener("ready", listenerObject);
AS初心者ですが質問させてください WinXP,FlashMX2004使ってます ゲームを作っていて、LANで繋がれたパソコン同士でハイスコアを表示させたいと思っています。 loadVariablesでテキストファイルから変数を読み込んで、(hscore=1000のように) それをhiscore=parseFloat(hscore); で変換するとhiscore=NaNになってしまいます。 変数のリストアップをするとhscore="1000"は読み込めています。 恐らく面倒なことをやっているような気がするのですが、 何かいい方法は無いでしょうか? お願いします。
131 :
130 :2007/08/29(水) 12:19:35 ID:UEebW6WD
連投すいません。訂正でパソコン同士ではなくてローカルサーバーに繋がっています
>>130 Flash単体では書き出しが出来ないので、CGI(PHPとか)をLoadVarsで使って、
サーバーのテキストファイルに書き出し、読み込みをする。
>>130 スコアが整数のみなら、
hiscore=Number(hscore);
でもいいと思うけど。
ただ、parseFloat関数でも
hscoreに"1000"が入ってれば数値に変換されるはずだから、
関数呼び出し位置に問題があるような気がする。
試しにテキストの内容に関わらず、parseFloat関数呼び出す直前で
hscore="1234";
hiscore=parseFloat(hscore);
とhscoreに直接文字列突っ込んだ後parseFloatするなりして、その結果を見てみたら?
厨房みたいな質問で悪いんだが、ホンキで気になったので質問させてほしい ニコニコ動画のコメントのID割り出しツールがあるけど、あれって一体どういう仕組み・・・? コメントCSVやチャットサーバからのレスポンスに、実はIDも記述されてて、 それを取得するような改造版FLVPlayerを、標準Playerとすり替えてUIにしてるのかな? 予想で構わないので何かレスポンス希望
超能力に米俵一票
>134 IDも送ってくんだよ。ツールに解説あるんじゃね?
すいません、ひとつ質問させてください。 AS3.0で、Javaサーバーとソケット通信するFlashを作成していて、確立するためのポリシーファイルについて質問です。 function start_connect(address,port) { Security.loadPolicyFile("xmlsocket://" + address + ":" + port); socket.connect(address,port); } 上記の様なコードの時、loadPolicyFileでポリシーファイルを受け取る前に.connectメソッドが動いてしまいそうなのですが、大丈夫なのでしょうか? loadPolicyFileの戻り値も無いみたいですし・・・。
138 :
130 :2007/08/29(水) 20:35:09 ID:UEebW6WD
>>132 >>133 レス遅れてしまいましたが答えて下さりありがとうございます!
まず133の方法で試してみたのですがNumberでもだめでした。NaN
直前に hscore="1234"; を入れてみると1234になったのですが
同じ位置に試しにparseFloat入れてもダメでした…
そこで132さんのCGIについて調べてみた所、それっぽい記述があったので
CGI全く触ったことありませんが、ちょっとがんばってみます。
どこかにサンプルがあればそれを参考にしようと思います。
ありがとうございました
>>137 ポリシーファイル系の処理はLoader系と違って完了するまで優先的に処理されるから大丈夫
>>139 なるほど、安心しました。
どうもありがとう!
ネット対戦ゲーム作ってる人って自分以外にこのスレでいますかな。
>>141 その板のFLASH系もう過疎ってだめぽ
143 :
Now_loading...774KB :2007/08/30(木) 13:22:29 ID:ljrzh0lg
FlashCS3 AS3 クラスから stage.addEventListener(KeyboardEvent.KEY_UP, keyCheck); とかするとstageがnullとかエラーが出てしまいます。 stageなしだとフォーカスが必要とのことですが、 "マウスクリックしてフォーカス"とかなしで キー入力対応させるにはどうしたらよいですか?
意味がよくわからんけど、stageプロパティ使いたいならそのクラスに DisplayObject含むクラス継承させときゃいいんじゃね?
あと、ムービーにフォーカスが無い時のキーボードイベント拾う事は不可能。 それできたらパスワードの入力の時とかにキーのログ拾われるから禁止になった。
146 :
Now_loading...774KB :2007/08/30(木) 14:35:40 ID:ljrzh0lg
>>144 レスありがとうございます。
public function Stopwatch(initTime:Number=3) {
timetotal = initTime*60;
outputText = new TextField();
outputText.text = timetotal;
addChild(outputText);
myTimer = new Timer(1000,timetotal);
myTimer.addEventListener("timer", counter);
stage.addEventListener(KeyboardEvent.KEY_UP, keyCheck);
}
public function keyCheck(event:KeyboardEvent) {
trace(event.keyCode);
myTimer.start();
}
なにかキーを押したらTimerのカウント数を表示するだけのクラスなんですが、
stage.addEventListener(KeyboardEvent.KEY_UP, keyCheck);
を
addEventListener(KeyboardEvent.KEY_UP, keyCheck);
とすればカウントが表示されるのですが、
テキストフィールドにフォーカスしないとキー入力を受け付けてくれませんでした。
調べたらstage.を書かないとフォーカスなしでは動かないとのことなので
書いたのですが今度はエラーが出てしまいました。
DisplayObjectを入れろとのことで、
import flash.display.DisplayObject;
としたらエラーは出ないのですがテキストが表示されなくなりました。
stage.addChild(outputText);とかにしても同じでした。
そもそもそのクラスは何を継承してるの?
こんなで、 package { import flash.display.Sprite;import flash.utils.Timer;import flash.events.*; import flash.text.TextField; public class TimePanel extends Sprite { var myTimer:Timer,_t:TextField; public function TimePanel() { _t = new TextField();_t.text = "100";addChild(_t); myTimer= new Timer(1000); myTimer.addEventListener(flash.events.TimerEvent.TIMER , counter); setEvent(); } public function setEvent() { if (stage) { trace("画面に追加されてます"); stage.addEventListener(KeyboardEvent.KEY_UP, keyCheck); } else { trace("画面に追加されてません"); } } public function counter(e) { _t.text = String(Number(_t.text)-1); } public function keyCheck(e) { trace(e.keyCode);myTimer.start(); } } }
うごかすにはこんなじゃね? var t=new TimePanel() addChild(t) t.setEvent() ようするに、stageまで辿りたいなら表示リストに乗っけないと駄目なんでない?
あとは、FlashCS3だったらドキュメントクラスにしときゃ、stageで確実にStage拾えるんじゃね?
151 :
Now_loading...774KB :2007/08/30(木) 16:09:44 ID:ljrzh0lg
>>148-150 これの追加でいけました!ありがとうございます。
stopwatch.setEvent();
public function setEvent() {
if (stage) {
trace("画面に追加されてます");
stage.addEventListener(KeyboardEvent.KEY_UP, keyCheck);
} else {
trace("画面に追加されてません");
}
}
152 :
Now_loading...774KB :2007/08/30(木) 16:19:13 ID:zj2bgIKw
FLASHでflvファイルを消音状態で表示したいと思い、ググッてみたらこの情報を見つけたのですが
ttp://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=1195&forum=8 >MovieClip.attachAudio()メソッドを使って、音源のNetStreamインスタンスを、コントロール対象のMovieClipに接続する必要があります。
> // サウンドコントロールの対象にするMovieClipをmy_mcとした場合
> var my_sound:Sound = new Sound(my_mc);
の辺りがよく分かりません、new Soundのカッコ指定用にストリーミングビデオをMCシンボルに変換が必要?
と思い、ビデオをmy_mcにシンボル変換してみましたが、やはり音は消えませんでした
現状ではムービーは普通に再生されますが、消音できてない状態です
因みにrootの階層にストリーミング形式のmy_videoを配置しています
どなたらアドバイスをお願いします・・・
ずっとhtml+JSは書いていて、 最近フラッシュを始めました。 質問ですが、ASでは、 (function(){ trace("asdf") })() と書いても動かないものなのでしょうか? 環境は、Flash8Pro + MacOSX です。 よろしくお願いします。
>>152 変換じゃなくて適当なMCが必要なだけだから空のMC作って指定してあげれば
いいだけ。
>>154 消音されるようになりました!どうもありがとうございます!
>>153 8(AS2.0)だとそれは動かなかった気がする。
いまCS3(AS3.0)で試したら動いた。
157 :
153 :2007/08/30(木) 17:44:40 ID:upfWoDgo
>>156 ありがとうございました。
うpでーたん買いに行ってきます!
(((;;;:: ;: ;; ;; ;:;::)) ::)
( ::: (;; ∧_,∧ );:;;;)) )::: :; :))
((:: :;; (´・ω・)っ;;;; ; :))
((;;; (っ ,r どどどど
ど・・・・・
i_ノ┘
こんばんは。CS3のAS3.0でFLASHを作成しています。 キーボードの操作を作成していてこう記述しました。 stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownEvent); function KeyDownEvent(event:KeyboardEvent) { trace(event.keyCode) } この処理でひとまずキーの押下を試していたのですが、 CTRL+ENTERでパブリッシュするとZキーが反応しません。 おそらく「90」が表示されると思うのですが・・・何故か無反応です。 他にもAキー等も利かず。 試しにキーコードをテキストに表示する処理を作り パブリッシュ後のswfファイルを開くとZキーも反応しました。 このイベントリスナーはCS3でパブリッシュ中に不具合でもあるのでしょうか。
159 :
158 :2007/08/31(金) 00:44:58 ID:zmW3hsvO
すいません、Zキーを押すと拡大ツールになるみたいでした。 キーボードのショートカットをオフにしたら反応しました。 しかし、キー全部使うような場合はどうするんでしょう・・・全部オフにするのかな。
>159 糞仕様です。プレビューでショートカットの無効を試してください この回答で問題は解決しましたか?
161 :
158 :2007/08/31(金) 07:59:21 ID:zmW3hsvO
>>160 回答ありがとうございます
ツールのキーショートカットを全部削除したものを作りました。
その質問に「はい、解決しました」を選べた試しがないです(笑)
ウィンドウズXPでFLASH8を使っています。 createTextFieldでテキストフィールドを作った後に、setTextFormatでテキストフォーマットを指定しています。 その後中のテキストを変えるとフォーマットが勝手に変更(デフォルトへ?)されてしまうのですが何か良い回避方法は無いでしょうか? 今はテキストが変更されるたびに同じテキストフォーマットをぶちこんでるのですが処理の重さの方が気になります こんな感じです _root.createTextField("test", 0, 0, 0, 300, 300) fmt = new TextFormat(); fmt.size = 24; test.setTextFormat(fmt); test.text = "1行目\n"; test.text += "2行目"; test.setTextFormat(fmt);//これが無いとテキストフォーマットが解除されてしまう 質問の仕方が下手で申し訳ない・・・
setNewTextFormat
素早い回答ありがとうございます! 試してみましたがこれでかなり処理が軽くなりそうです
CS3 AS3で作ってるんですが Timerで3分のカウントダウンタイマーを作ってるんですが OSの時計より5秒も遅れてしまいます。 これって普通なんでしょうか?
>>165 タイマー開始は、ボタンのon(press)/on(release)で動作?
on(press)なら押した瞬間からだからね。
1分や10秒のタイマーも試した?
マシンのパワーによっては動作(反応)が遅くなることがあるけど。
もしかして1秒たったら+1するイベントを実行していたりして。
>>166 キーアップです。1分で2秒遅れ、10秒なら問題がないくらいです。
ただ、時計とどんどんずれていってしまいますのでイベントのタイミングはないようです。
マシンパワーはPenM1.73GHzなんですがどうなんでしょうか。
スクリプト
public function Stopwatch(initTime:Number=3) {
outputText = new TextField();
outputText.autoSize = TextFieldAutoSize.LEFT;
timetotal = initTime*60;
outputText.text = String(timetotal);
addChild(outputText);
myTimer = new Timer(1000,timetotal);
myTimer.addEventListener("timer", counter);
}
public function setEvent() { if (stage) { trace("画面に追加されてます"); stage.addEventListener(KeyboardEvent.KEY_UP, keyCheck); } else { trace("画面に追加されてません"); } } public function keyCheck(event:KeyboardEvent) { if(event.keyCode == 32 && !keyFlg){ keyFlg = true; myTimer.start(); }else if(event.keyCode == 32 && keyFlg){ keyFlg = false; myTimer.stop(); } } public function counter(event:TimerEvent):void { outputText.text = String(timetotal - myTimer.currentCount); } です。
>>168 currentCountはハンドラが呼ばれた回数だから、それを時間計算につかうのはどうかと。
秒以下なりの端数の丸めが生じるから、表示が秒単位ならずれは1秒のずれは出る。
timerをストップするタイミングとスタートするタイミングでもずれは生じるよね。
ヘルプよりTimer オブジェクトについて --------------------------------------------------------------------- SWF ファイルのフレームレートまたは Flash Player の環境 (使用可能なメモリやその他の要素) に応じて、 Flash Player ではややオフセットの間隔でイベントを送出できます。 ~~~~ たとえば、SWF ファイルを 10 fps (1 秒あたりのフレーム数)、 つまり 100 ミリ秒間隔で実行するように設定し、 80 ミリ秒でイベントを発生するようにタイマーを設定すると、 Flash Player ではおよそ 100 ミリ秒間隔でイベントが実行されます。 また、メモリに負荷のかかるスクリプトでも、イベントがオフセットされる場合があります。 --------------------------------------------------------------------- ただし割り切れる数、仮に10fpsで1000ミリ秒間隔で実行するようにしてもずれてくる(と思う)。 Flashに限らずあらゆるプログラムのタイマーイベントは"約"○秒間隔で実行されるものと覚えておいた方が良い。 今回のタイマーイベントは経過時間描画更新用にでもしておいて、 実際何秒経ったかの計算は、タイマー開始時の時間をgetTimer()で取得して保持しておき 描画更新タイマーイベントの度にこの時の時間をこれまたgetTimer()で取得、 そんで保持しておいた開始時の時間との差分を計算して 結果を経過時間として表示がベターでありセオリーかな。 描画更新用タイマーの間隔を1000ミリ秒にすると最初の理由で時々秒数が2秒飛んで表示されたりするはずだから、 気になるなら描画更新イベントを呼ぶ間隔を100ミリ秒なりfpsが許すまで気にならないレベルに落とせば良いと思う。
172 :
Now_loading...774KB :2007/08/31(金) 23:08:28 ID:agiUkJyo
FlashMX2004です。クラスの利用についての質問です。 クラスを管理しやすくするために、FLAファイルと同階層に MCControlフォルダと、Managementフォルダを作り、 MCControlフォルダにCursor.as、Managementフォルダに Condition.asを配置しました。 ここで、Cursor.asで、Conditionを使おうとして class Cursor { var condition:Condition; } とすると、「クラス'Condition'がロードされませんでした」というエラーが出ます。 importしようとして、 import Management.*; class Cursor { var condition:Condition; } としても、解決できませんでした。 どうすれば、別フォルダにあるクラスを利用することができるのでしょうか?
FLASH5使ってます ムービークリップのアクションに記述した変数の中身を 別のフレームのムービークリップやフレームのアクションから 読み込みたいのですが、可能ですか
>>172 パブリッシュ設定画面でActionScriptのバージョンリストの横にある設定、
そこでクラスフォルダを指定できる場所があると思うからそこに
MCControlとManagementフォルダパスを指定すればいける、かも。
>>172 パッケージとして使うなら class MCControl.Cursor {
>>173 パスを使う。例えば、MC名がxxxで変数がyyyなら、
絶対パスでは、_root.xxx.yyy
177 :
172 :2007/09/01(土) 12:48:19 ID:or8PVano
ご解答ありがとうございます。 >174 相対パス指定、絶対パス指定の両方をためしたのですが、状況は 変わりませんでした。 >175 class MCControl.Cursor { var condition:Condition; } としてみたのですが、状況は変わりませんでした。 また、念のため class MCControl.Cursor { var condition:Management.Condition; } および、Condition.asを class Management.Condition{ //処理 } として試してみたのですが、同様に状況は変わりませんでした。 なお、エラーは「シンタックスチェック」ボタンを押したさいに出ます。 FLA精製時には、エラーメッセージは出ません。 ※クラスファイルで別クラス読み込むさい、「../」といった方法あればいいのですが……
179 :
172 :2007/09/01(土) 13:17:41 ID:or8PVano
ご回答ありがとうございます。 >178 「環境設定」から、MCControlとManagementのパスを追加したところ class MCControl.Cursor { var condition:Management.Condition; } だと状況に変化はなかったのですが、試しに class MCControl.Cursor { var condition:Condition; } としたところ、「コンパイルされたクラス'Management.Condition'が 読み込まれたクラス'Condition'に一致しませんでした」という、別の エラーが帰ってきました。 (「クラスをコンパイル」した覚えはないのですが……) なお、Condition.asは前回と同様 class Management.Condition{ //処理 } です。
クラスパス追加するからエラーがでるんだろ。 追加するのはクラスのルートディレクトリだけな。でコンパイルするときはASO 削除してから。
181 :
Now_loading...774KB :2007/09/01(土) 13:47:57 ID:+bO+o6yA
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) SharedObjectのディレクトリについて質問です。 localSO = SharedObject.getLocal(saveName1, "/"); と localSO.flush(); で、saveName1という名前でHDDのlocalhost内にデータを保存させることは 出来ました。 次にlocalhostの下に、ASで任意の名前のディレクトリ(例えばFolder1)を作って 保存したいのですが、これは可能でしょうか? solファイルが増えることを想定して、ディレクトリ名で管理したいと思っています。
182 :
172 :2007/09/01(土) 14:05:18 ID:or8PVano
ご解答ありがとうございます。 >180 ルートディレクトリを「フルパスで」設定したところ、エラーが出ずに 無事表示されました。ありがとうございました。 ただ、一つ疑問なのですが、環境設定ではすでに クラスパスとして「.」が登録されていました。 これは、FLAファイルがおかれているディレクトリを指すのだと 思うのですが、なぜ改めてフルパスで指定しなければ うまく動かなかったのでしょうか? ※今後、複数のFLAファイルを作っていく際に、「そのFLAのある ディレクトリがクラスのルート」という指定ができてくれれば 編集のたびにいちいち環境設定を変更しなくても良くなるのですが……。
>>182 ファイルからの相対パスじゃなくて
実行プログラムからの相対パスだからじゃね?
よく知らんけど
184 :
172 :2007/09/01(土) 15:09:44 ID:or8PVano
ご回答ありがとうございます。 >183 私は実行ファイルを「appli」フォルダに入れていたので、そこからの 相対パス「..\」をクラスパスに設定したところ、問題なく動作いたしました。 ありがとうございました。 >172からの質問は、これにて終了いたします。 皆様、本当にありがとうございました。
185 :
158 :2007/09/01(土) 15:20:03 ID:e1mE+muK
>>181 ディレクトリ操作は無理じゃないかと。
FLASHから勝手にフォルダ作られちゃ困るでしょ
FlashMX2004 Professionalです。 私は>172ですが、別件の質問をさせていただきます。 アニメーションするマウスカーソルを作ろうとしているのですが、 このアニメーションを、複数の外部JPEGを読み込むことで 実現しようと考えています。(いわゆるパラパラ漫画のようにする) ぱっと思いつくのは、setIntervalを使って、短い時間に次々と MovieClipLoader.loadClip()でJPEGファイルをロードする方法ですが、 アニメパターンごとにloadClipするのは明らかにまずいように思いますw あらかじめ画像全体をメモリに読み込んでから、表示時jにメモリへ アクセスするとか、そう言った「外部ファイルのアニメ表示」のアイデアには どういうものがあるのでしょうか?
>>181 >>186 "/"で指定できるのはswfのurlに含まれるディレクトリ
C:\Documents and Settings\hoge\test.swf
の場合
"/Documents and Settings"でlocalhost内にDocuments and Settingsと言うフォルダが出来る。
(webでも大体同じ)
残念ながら任意の名前は指定できない。
/以下の任意のディレクトリ構成は可能じゃなかったっけ?
190 :
181 :2007/09/01(土) 20:16:42 ID:/2GjwLFq
>>185 ,186
ありがとうございます。第2引数では駄目でした。
やはり、ディレクトリはlocalhost固定のようです。
>>181-189 すいません。このスレをリロードせずに書き込んでいました。
一応、下に1個は作成できるということですか?
>>191 ああ、第2じゃなかった
第1引数の方で"savedir/savedata"とかでやってみてちょ
>>192 有り難うございます。
path1 = "subhost/";
localSO = SharedObject.getLocal(path1+saveName1, "/");
とすると、#subhostフォルダ(シャープが付く)が作成され、その中に
saveName1.solが保存されました。
なお、第2引数 "/"が無い場合は、path1で指定した名前に関わらず
Flashで勝手に ##EE6383F9C6・・・・ などというフォルダが作られ、
その中に00000001.solというものが出来ます。 よって第2引数も
必須のようです。
>>187 試してないから出来ないかもしれないけど
1 2 3 4
レイヤー1:mc1
レイヤー2: mc2
レイヤー3: mc3
ってMC置いといて
4フレーム目でそれぞれのMCに画像読み込んで
1〜3フレームをループすればできそう。
195 :
188 :2007/09/01(土) 23:14:26 ID:0t02gU5O
>>192 おお、気が付かなかった、勉強になった。
>>187 それ、一枚ごとに読み込まなきゃいけないの?
アニメにするつもりなら、swfとかflvみたいなひとかたまりにしておいた方がよくないか?
標準カーソル隠してカーソルの位置にアニメーションするMC、だけで済むだろうに・・ まさかFlexで作ってるとかじゃあるまい?
198 :
187 :2007/09/02(日) 00:03:21 ID:JKrAf2BC
ご回答ありがとうございます。 >194 ありがとうございます。あらかじめ複数配置しておくのは盲点でした。 ただ、loadClipするときは、そのフレームで対象となるmcが配置されて いる必要があるので、下のレイヤーを前のフレームに配置し 後のフレームを上に重ねるようにすればできそうです。 (この場合、複数のmcがカーソルの中で重なっているので のちの仕様変更(透過PNGを使うなど)の歳にもう一度考えないと いけないとは思いますが、当分はこの手でしのげそうです) >196>197 発注元からの指示が「Flashがなくても絵柄を変更できるように PhotoShopで扱える画像で頼む」とのことでしたので、こんな方法を 取っています。Flash8以降ならPNGを使えれば透過もできて最高なのですが 開発環境がMX2004なので、やむなくJPEGで納得してもらっています(´・ω・`)
プロジェクターについて質問なのですが、 例えばウィンドウのクローズを押された時に『終了しますか?』というようなダイアログを出したいのですが FLASH側でクロ−ズを取得するコマンドってありますか?
200 :
Now_loading...774KB :2007/09/04(火) 16:40:25 ID:y0mjhuPr
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) SharedObjectの新規ディレクトリ(フォルダ)について path1 = "subhost/"; localSO = SharedObject.getLocal(path1+saveName1, "/"); とすると、#subhostフォルダ(シャープが付く)が作成され、その中に saveName1.solが保存されました。 ここで作成とは反対に、作成ディレクトリ(フォルダ)の削除と名前の変更を 試みていますが、両方出来ません。 削除・変更は、(セキュリティ上)OSの機能を使わないとやはり駄目なのでしょうか? なお、新規ディレクトリ内のsolファイルの削除は、saveName1を定義して localSO.clear(subhost); でOKでした。
無理じゃないの? てかそれ目的はなに?
ちなみにプレーヤーの設定画面でローカル記憶領域を0にすれば 該当ドメインのsolをフォルダごと消せるけど それではだめなの?
質問なんですが、 とある本に、あるMCがマウスカーソルの動きに 遅れてついてくるスクリプトが書いてあり、 マウスカーソルの位置でピタリと止まるには onClipEvent ( EnterFrame ) { if ( _x < int ( _root._xmouse/10)*10) { _x+=10; } else if ( _x > int ( _root._xmouse/10)*10 { _x-=10; } if ( _y < int ( _root._ymouse/10)*10) { _y+=10; } else if ( _y > int ( _root._ymouse/10)*10 { _y-=10; } } と、目標地点を移動量刻みに分割しろと書いてあったのですが、 同じようじ書いてもMCがカーソルのところで止まってくれません、 どこがいけないんでしょうか?
サウンドプレーヤー作成にて質問です。 目的はループ再生(もしくは“100回”など)なんですが、一時停止後 //再生再開 on(release){ Sound1.start(Sound1.position/1000, 0) } と、ボタンアクションに記述すると、一時停止したその曲で終わってしまいます。 この記述のどこに変更、もしくは足せばループ再生的な事ができますか? ループの回数は30回もあれば十分なので。よろしくおねがいします。
>>203 MCの移動量が10刻み、1にしたら多少マシになるかも
>>204 onSoundComplete = function(){ Sound1.start();}
>>203 MCの位置とマウスの位置が10(移動量)以内なら、
MCの位置にマウスの位置を代入するようにする。
眠くて頭が回んないので、気づいたとこだけ答えると、 >203 int()はMath.int()のまちがいじゃまいか。 あと、そのスクリプトは構文エラーなので、括弧の閉じ方とか 予約語などをもう一度見直した方がいい。 なお、そのスクリプトでどういう動きをしたいのかが分からないが、 「遅れてついてくるMC」なら、俺はこうする onClipEvent ( enterFrame ) { _x -= (_x - _root._xmouse) / 10; _y -= (_y - _root._ymouse) / 10; } >204 ボタンアクションにそーゆーことを記述するのはめんどいのでオススメしない。 (つーか「クリップアクション」自体、なるべく避けた方がいいと思う。迷子になりやすいし) とりあえず、そのスクリプトの「Sound1」を_rootから始まる場所に書き換えてみよう。 そのままだと、ボタンが置かれたMCで定義したSound1に対して あれこれ仕様という意味になるから、もっと上で定義していたら、とうぜん空振りする。
208 :
200 :2007/09/05(水) 01:08:38 ID:l+jAGjWi
>>201 目的は、GUIとまでは行きませんが、solファイルを含むフォルダ操作です。
フォルダの作成に加えて変更・削除が出来れば、かなり自由度が増えると思いました。
>>202 ローカル記憶領域を0
試してみます。
>>208 Flashでフォルダ操作やファイル操作は出来ません。
>208 localSO.data.rootfolder.savedata1=保存内容 とかじゃだめ? これならdataプロパティ以下の要素を、色々いじれるが。 ファイルを直接作ったり消したりしたいなら、あきらめたほうがいいかも。
211 :
200 :2007/09/05(水) 02:25:57 ID:l+jAGjWi
>>209-210 複数のフォルダ内の複数のsolファイルに色々な項目(例:身長,体重,年齢など)を
詰め込みたいので出来れば、フォルダ単位で消去・変更したいです。
なお、「ローカル記憶領域を0」は、まだ試していません。
>211 var root = new Object(); root = SharedObject.getLocal("root", "/"); saveData1 = SharedObject.getLocal("root/saveData1", "/"); root.data._content = "これはカレントのデータだお"; saveData1.data._content = [{height:"209cm", weight:"135kg", name:"G.馬場"}, {height:"191cm", weight:"102kg", name:"A.猪木"}]; delete saveData1.data._content; 末尾の delete saveData1.data._content; を付けたり外したりするなどして、 *solファイルの有り無し検索してみよう。 自分で実験するヒマを惜しんではいけない。
申し訳ない、>212の1行目var root = new Object(); は不要です。 ・・・ダメだ、頭が働かないのでもう寝る。
214 :
200 :2007/09/05(水) 03:30:38 ID:l+jAGjWi
215 :
202 :2007/09/05(水) 04:11:35 ID:oq2Wn5BF
>>200 「ローカル記憶領域を0」は無視でいいよ
話が良くわかってなかった。
フラッシュからASでやれることじゃないし。
外部テキストを読み込むクラスなんですけどテキストが返ってこないんです。 どうすればテキストの内容を返すことができるのでしょうか。 public class Textload extends Array { var loader:URLLoader; var datB:Array = new Array(); public function Textload() { } public function textloading():Array { loader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeHandler); loader.load(new URLRequest("test.txt")); } public function completeHandler(evt:Event):Array { var datA:Array = loader.data.split("\r"); for(var i:Number=0; i<datA.length; i++){ datB[i] = new Array(); datB[i] = datA[i].split(","); } return datB; } var playerdata:Array = new Textload(); trace(playerdata.textloading());
待ってないから
>>216 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
219 :
203 :2007/09/05(水) 22:41:07 ID:v6ZxKUeG
ご回答ありがとうございました
>>207 Math.int() にしたらエラーが出ましたが、
onClipEvent ( enterFrame ) {
_x -= (_x - _root._xmouse) / 10;
_y -= (_y - _root._ymouse) / 10;
}
の方法で解決しました。
なぜ、うまくいくのか
じっくり考えたいと思います。
paraflaでFLASHを作っています。 左クリックでのボタン処理ができるように、 右クリックを押すことでアクションをしたいのですが、 どうすれば出来るでしょう?
コントロールパネルで左利き用マウスに設定すればいいよ
>219 自分自身の座標と、目標の座標の10分の1づつ接近していく。 近づけば近づくほど、「10分の1」の値は小さくなる=近づき方が遅くなる ただし近づいてはいるので、いずれある時点でその差は1を下回る=目標値点で止まる ただ、止まっているときでも常にカーソルへの移動を試みているので 無駄を省きたいので有れば「マウスカーソル移動でMC移動開始」と 「移動距離が1を切ったらonEnterFrameをやめる」を 実装してもいい(必要ないと思うならしなくてもいいが)。 >220 Macのことを考えてみよう。 (じつは、右クリックはコンテクストメニューなら割り付けられる。方法は勉強してちょうだい)
>>220 ,222
AS3.0限定かもしれないけど右クリックのアクションも可能だと思うよ。
前に見た解説サイト見つけられないけど・・・
paraflaでもできないわけじゃないかも。
>>216 きちんとヘルプを読めばサンプル載ってるし、そんな書き方しないと思う。
適当に書いて動きませんなんとかして、はひどすぎ。
>>224 いや、適当というつもりはなかったです。
return datB;のところでtrace(datB)するとテキスト取得の確認ができたので、
関数に型名つけてreturnで返そうと思いました。
public function completeHandler(evt:Event):Array {...}
だけだとundefinedとでたので、public function textloading() {...}のほうにも
型名つけないとまずいのかと思ったのですが、そうするとエラーが出てしまい、
どうすればよいのか解らなくなり質問しました。
>>225 ん、まず、なんでArrayから派生させてるのかがわからん
ハンドラのreturnって何が受け取るの?
>>226 swfのタイムラインに以下を記述してtrace結果でテキストの内容を出そうとしました。
var playerdata:Array = new Textload();
trace(playerdata.textloading());
>>227 答えがそれかよw。Classを使ってどうこなら
まず、Javaなりの入門書を一冊やって、OOPを勉強してからだな。
229 :
Now_loading...774KB :2007/09/06(木) 16:14:27 ID:DwFYQP3i
バイナリデータを埋め込んで動的に読み込みたいんですが、 ↓のように定義して [Embed(source='data/stage1.dat', mimeType="application/octet-stream")] private var GameData1:Class; ↓のようにクラスへの参照を取得しようとすると var classRef: Class = getDefinitionByName("GameData1") as Class; ↓のようなエラーが表示されてしまいます。 ReferenceError: Error #1065: 変数 GameData1 は定義されていません。 Embedで埋め込んだクラスにはgetDefinitionByName()できないのでしょうか? どうにかクラス名を動的に指定して読み込む方法はないでしょうか。 環境はWinXP/Flex2 SDK/Flash9 r28です。
そんなもんクラスじゃねーだろ 好きに読み込め
なんだか頭の不自由な奴が自分ルールでクラスだのなんだのを勝手に 定義してわけわからん質問してるのが多いな。同じ奴か? 基本的な本1冊読めよ。馬鹿すぎる。
232 :
229 :2007/09/06(木) 16:47:32 ID:DwFYQP3i
すみません。 普通のアセットクラスだと思うのですが、どの辺りが間違っているのでしょうか。
>>232 Flexでの書き方はしらんが、知ってる人でもその質問では答えられんと思う。
何をやりたいのかを書いて、具体的なソースを提示しないとわからんよ。
だいたい >バイナリデータを埋め込んで動的に読み込みたいんですが、 埋め込んで動的にって。。。どういうことだよw
235 :
229 :2007/09/06(木) 17:36:43 ID:DwFYQP3i
質問が下手ですみません。 ゲームのステージデータを埋め込んで、各ステージの初期化時に 読み込みたいのです。 public class Sample01 extends Sprite { [Embed(source='data/stage1.dat', mimeType="application/octet-stream")] private var GameData1:Class; [Embed(source='data/stage2.dat', mimeType="application/octet-stream")] private var GameData2:Class; ... } といったようにSWFファイル内にバイナリデータのアセットとして埋め込んでおいて、 以下のようなステージデータのロードメソッドを呼ぶつもりでした。 動的にというのは、ステージ番号を指定してgetDefinitionByName()に渡す文字列を 変えたいという意味で使いました。 private function loadStageData(stage: int) { var classRef: Class = getDefinitionByName("GameData"+ stage) as Class; var GameData: ByteArray = new (classRef()); } 埋め込んだデータがJPEG画像などでも同様でした。 別の方法でも構わないのですが、同様のことを実現するにはどういったやり方が あるでしょうか。宜しくお願いします。
だからそれのどこがクラスだよ 今のあんたに何説明しても無駄
237 :
229 :2007/09/06(木) 18:08:28 ID:DwFYQP3i
>>236 クラスについては認識が間違っているということで、再度勉強させていただきます。
ステージデータについては、当初以下のような記述で動作していたのですが、
クラス名の指定をgetDefinitionByName()に置き換えられないかと試行錯誤して
いるところでした。この違いについて、まだよく理解できていません。
private function loadStageData(stage: int): ByteArray {
var data: ByteArray;
switch (stage) {
case 1:
data = new ByteArray( new GameData1() );
break;
case 2:
data = new ByteArray( new GameData2() );
break;
...
}
return data;
}
ステージデータは100面分用意する予定なので列挙するのはできれば避けたいと
思っています。
>>235 にも書きましたが、私の書いたやり方がよりも良いやり方が
あれば、お教えいただけると幸いです。
238 :
229 :2007/09/06(木) 18:12:32 ID:DwFYQP3i
バイナリデータを読み込む部分ですが、popforgeというサウンドライブラリの SoundFactory.classを参考にしました。Classと指定することについては、そう いうものだと思って、あまり深く考えていませんでした。
埋め込む必要があるなら文句いわねーで列挙しろ めんどくさかったらコードを書くマクロを作れ 実行時に読み込むだけで事が足りるならクラス化しねーでファイル読み込め
240 :
229 :2007/09/06(木) 18:45:02 ID:DwFYQP3i
列挙するのを避けたいというのは面倒だという理由ではなく(それこそマクロ等で 処理すれば良いので)、保守性や可読性の観点から現実的ではないと判断しました。 そこで調べた結果行き着いたのがgetDefinitionByName()でしたが、意図した通りに 動作させることはできませんでした。 そもそもgetDefinitionByName()はこのような用途には使えないのか、使い方が悪いのか。 他のやり方があるのか、あるいは列挙以外に方法はないのか…というのが、私の知りたい ことです。宜しくお願いします。 # 外部ファイルから読み込む案もご提示いただきましたが、今回はデータを埋め込む場合で # お願いいたします。
使い方というより頭が悪いな
242 :
229 :2007/09/06(木) 18:59:27 ID:DwFYQP3i
正直、頭は悪いほうなので、独力では解決できずに助言を求めている次第です…。 内容の無い、悪意の回答はご遠慮いただけると幸いです。
var classRef:* = new getDefinitionByName("GameData"+ stage)() か var GameData: *= new (classRef)() じゃね?知らんけど
244 :
229 :2007/09/06(木) 20:02:42 ID:DwFYQP3i
>>243 ありがとうございます。
早速試してみましたが、「getDefinitionByName()をコンストラクタとして
呼び出すことはできません」とのエラーが出てしまいました。
型宣言を「*」にする部分を参考にさせていただいて以下のようなコードも
試してみましたが、
>>229 同様の定義されていないエラーとなってしまいました。
var classRef:* = getDefinitionByName("Sound1");
var GameData:* = new (classRef)();
間違えた var classRef:* = new (getDefinitionByName("GameData"+ stage))()
246 :
229 :2007/09/06(木) 20:26:33 ID:DwFYQP3i
>>245 ありがとうございます。
やはり、定義されていないエラーになってしまいます。
getDefinitionByName()に渡している文字列が悪いのかもしれませんが、
traceを見ても「GameData1」になっているので、間違ってはいないと
思うのです。。。
すみません。
>>244 では「Sound1」になっていますが、効果音読むところをコピーして
しまいました。正しくは「"GameData"+ stage」と書いてあります。
>>246 var classRef: Class = getDefinitionByName("GameData1") as Class;
var gameData: GameData1 = new classRef();
これでどう?
GameData1がパッケージ内にあるなら、パッケージ名も書かなきゃだめだよ。
248 :
229 :2007/09/06(木) 22:24:58 ID:DwFYQP3i
>>247 ありがとうございます。
コンパイル時に以下のようなエラーとなってしまいました。
型が見つからないか、コンパイル時定数ではありません : GameData1。
var GameData:GameData1 = new classRef();
^
GameData1は現在Sample01というクラスの内部でEmbedしている箇所で宣言しています。
パッケージ名は親(?)のSample01には特に指定していないので、GameData1にも付かない
のだと思っています。こういう場合のパッケージ名がどうなるのかは、よく分かって
いません。ソースは以下のような感じです。
---
package {
import flash.display.*;
...
public class Sample01 extends Sprite {
[Embed(source='data/stage1.dat', mimeType="application/octet-stream")]
private var GameData1:Class;
[Embed(source='data/stage2.dat', mimeType="application/octet-stream")]
private var GameData2:Class;
...
}
}
---
っ getDefinitionByName("Sample01_GameData1") as Class;
っ var GameData:* = new (getDefinitionByName("Sample01_GameData1") as Class);
251 :
229 :2007/09/06(木) 23:31:26 ID:DwFYQP3i
>>249 うああ、できました!ありがとうございますっ…!
クラスの中のクラス(どう呼ぶのか分かりません)名は、そのように
記述するのですね。勉強になりました。
>>249 さん、答えていただいた皆様、本当にありがとうございました。
252 :
216 :2007/09/07(金) 10:21:44 ID:/y5tc2Xf
>>228 public class Tashizan {
public function Tashizan() {
}
public function sum(numA:Number,numB:Number):Number {
return numA+numB;
}
}
var goukei:Object = new Tashizan();
trace(goukei.sum(15,3));
//18
のようにreturnで返したかったんですがなにが問題なのでしょうか?
問題点だけでも教えていただけませんか。
>>216 関数の外にreturn置いてるのとか継承と型指定を取り違えてる風な書き方
3個以上間違いがあると誰も答えてくれないだろうから質問するときは問題点を
絞り込むように単純化した方がいいよ。
>>252 Arrayから派生してるのは何故?
returnは何が受け取るの?
レスしても、ちゃんと答えない質問者にはレスする気にならん。
255 :
Now_loading...774KB :2007/09/08(土) 22:27:58 ID:rf8QzVNl
WinXP-ProでFlash8-Pro(Ver8.0)を使っています。 lineStyle()で線を点線(あるいは破線)にすることは可能でしょうか? 一応ヘルプを見ましたが、分かりませんでした。
257 :
Now_loading...774KB :2007/09/09(日) 01:52:20 ID:46xyRfSe
環境はWin, CS3, AS3です。 これまでは_urlでswfの置かれているパスを取得できたと思うんですが、 AS3の場合はどうすればいいでしょうか。 よろしくお願いしますm(_ _)m
>>257 trace(loaderInfo.loaderURL);
260 :
255 :2007/09/09(日) 04:54:02 ID:DAvWqwjE
>>256 有り難うございます。
なるほど、細かい点(線分)の集合ですね。
あー、お腹の調子がおかしい・・・ ←独り言
Javaをちょこっとかじってて、ActioScript初めてなんですけど、 flaファイル上のMovieClipにASファイルのクラスを適用することって出来るんでしょうか?出来れば軽くサンプルを書いてもらえるとありがたいんですが… ASで定義したクラスのメソッドでMovieClipの操作を行ってみたいんですが・・・
初歩的な質問ですみません。 LoadVariables()で読み込んだファイル名のMP3を再生させようとするのですが、 loadSound()でエラーが出てしまいMP3が読み込めません。 loadVariables("soundplay.txt", _root); my_snd01 = new Sound(this); my_snd02 = new Sound(this); my_snd01.loadSound(_root.sound01, false); my_snd02.loadSound(_root.sound02, false); soundplay.txtの中身: sound01=sound01.mp3&sound02=sound02.mp3 何故かloadSound()をコメントアウトすると変数がちゃんと拾えているようですが、 loadSound()があるとundefinedが出て読み込みエラーが出るようです。 これは何故でしょうか…詳しい方お願いします。
264 :
257 :2007/09/09(日) 20:12:11 ID:46xyRfSe
>>258-259 ディモールトグラッツェ!!!!
ありがとうございました、助かりました。
>261 俺も最初は苦労したくちなので、丁寧におしえちゃうぜ。 でもな、バージョン名くらいは書いて下さい。頼むから。 ライブラリウィンドウで、ムービークリップの リンケージ名称設定をしてから・・・ MXの場合: function クラス名(){プロパティを列挙} クラス名.prototype=new MovieClip(); クラス名.prototype.メソッド名=function{処理} クラス名.prototype.メソッド名=function{処理} : Object.registerClass(リンケージ名,クラス名); MX2004の場合: ムービークリップのリンケージ名の下に AS2クラスの項目があるので そこにクラス名を記入。 ※ちゃんとクラスはMovieClipをextendsしてるよね?
>>265 すいません、遅くなりました
Flash8 (AS2.0?)です
------
class Hoge extends Movieclip {
private var mc:MovieClip;
function hoge(target_mc:Movieclip){
mc = target_mc;
}
…
てかんじにして、flaファイル側に
hoge = new Hoge(リンケージ名);
hoge.hghg();
という感じでやってたんですが、反応が無いみたいです;
265の方法を試してみます。
>266 var hoge:Hoge=new Hoge(引数(インスタンス名とかな)); インスタンス名.onPress=function(){ hoge.ghgh(); } 既述通り、リンケージが楽 つーか、基本はggrば?
>266 俺は>265だが、8かー。MX2004使いだから的はずれかもしれんが 一応>266で気になったことは、 「MovieClipはattachで生成するのであって、newで生成しない」 (ただしFlexはnewで生成するが……) という、基本ルールを知っているかどうか。
>268だけだと意地悪なので、いちおうコードも載せておくよ。 _root.attachMovieClip("リンケージ名", "MC名",深度, {プロパティ名:値}); この「リンケージ名」に、さっき定義したリンケージ名をいれればOK。 ちなみに俺が良くやる方法は、 for (i=0; i<個数; i++){ MC[i]=_root.attachMovieClip("リンケージ名", "MC名"+i,i); } と、イコールつなぐことで、「参照」を取得できる。こうすると、いちいちパスを書かなくても MC[2]._alpha=50; なんてことができて、スゲーらくちんw
デザイナー初心者です。 フラッシュ制作で、キューブが回転して奥から転がってくるものを依頼されました。 回転するものはあっても転がってくる様なものは探しても見つかりませんでした。 その様なサイトかスクリプトがあれば教えて下さい。 よろしくお願いします。
>>271 有難うございます
そちらに行ってみます(`・ω・´)
質問です。環境はWinn2000・Mx2004です。 式の書かれた外部テキストファイルを読み込ませ、 それを解釈させて、結果をtrueかfalseで得ようとしています。 例えば、他の処理系風に書けば: res=eval("(a==1)&&((b<250)||(name=\"Dave\"))"); trace("resu;t: "+ res); で、trueまたはfalseを返したいのですが、ActionScriptのevalでは そう言うことができません。 次善の策として、JSONを使い: [ { "left" : "a", fugou : "==", "right":1}, {……}, {……} ] などと言うことも考えたのですが、どのように処理していいのかが まるで思いつきません。 どのようにするのがよいでしょうか?
>>273 javascriptでできるならASから呼んでやればいいんじゃない?
>>273 言ってることがいまいちよくわからんが、
>式の書かれた外部テキストファイルを読み込ませ
の部分はASで実装できてるの?
276 :
273 :2007/09/11(火) 21:57:50 ID:ZKuw48zy
>274 できればswf内で完結させたいと思っています。 >275 はい。文字列を読み込ませ、それをtraceでそのまま表示させることは できています。 >273のスクリプトを正確に書き直すと、 condition.txtの内容: (a==1)&&((b<250)||(name==\"Dave\")) flaファイルのスクリプト: lv=new LoadVars() lv.onData=function(string){ res=eval(string); //この行はあくまでも例示です trace("result: "+ res); }; lv.load("condition.txt"); です。
javascriptに投げてevalで計算した結果をexternalinterfaceで貰えばいいんじゃ?
>>273 逆ポーランド記法にできれば結構楽よ
// 変数は自分で管理
var MyVariables = {a: 1, b: 100, name: "foo"};
// 変数と数値と文字列の区別は適当に目印つける
var MyCondition = ["V:a", "N:1", "==", "V:b", "N:250", "<", "V:name", "S:Dave", "==", "||", "&&"];
var _stack = new Array();
for(i=0;i<MyCondition.length;i++){
var t = MyCondition[i];
switch(t){
case "==": var wk = _stack.pop() == _stack.pop(); _stack.push(wk); break;
case "&&": var wk = _stack.pop() && _stack.pop(); _stack.push(wk); break;
case "||": var wk = _stack.pop() || _stack.pop(); _stack.push(wk); break;
case "<": var wk = _stack.pop() > _stack.pop(); _stack.push(wk); break;
default: // 演算子以外は項である
var type = substring(t, 1, 2);
var term = substring(t, 3, t.length-2);
switch(type){
case "S:": _stack.push(term); break;
case "N:":_stack.push(parseInt(term)); break;
case "V:":_stack.push(MyVariables[term]); break;
}
break;
}
trace("「"+t+"」を処理した後のスタックの状態");
for(n=0; n<_stack.length;n++) trace("["+n+"] "+_stack[n]);
}
trace("result:" + _stack[0]); // 演算結果が[0]に残る
280 :
273 :2007/09/12(水) 12:14:04 ID:g8zl/LOd
皆様、ありがとうございます。
>>277 調べたところ、それはFlash8の機能のようです。またいずれにしても
WEBブラウザの力は借りたくないと考えています。
>>278 逆ポーランド記法は初めて知りました。
ただ運用面を考えると、あまり馴染みがない記述方法になるので
カッコなどをつかう記述を、その処理に落とし込めればベストです。
>>279 試しにソースをコピーしてみると、エラーが出たのですが、
オブジェクト定義で、要素の部分に'*"といった文字列を与えているためと
思われます(Flash8ではこの書き方は許されているのでしょうか?)
ただ考え方はソースからなんとなく見いだせましたので、
これでカッコに対応していれば、MX2004風味に書き直せるかも知れません。
>>280 やりたいことを明確に言わないとよくわからん
ASでの数式パースのロジックを知りたいって事か?
282 :
273 :2007/09/12(水) 23:48:17 ID:g8zl/LOd
>>281 やりたいことは、
「FlashMX2004を使って、
テキストファイルに記載された論理式を解釈して結果を得る。
ただし、WEBブラウザなどは使わず、swf単体で行う」
です。
正直、そのために何をどうすればいいのかが全く分からなかったので
こういう書き方をしました。
(正直、ここまで大がかりなものとは思っていませんでした……)
皆様の解答を見ていて、数式(論理式)のパース(構文解析と言う意味で
いいでしょうか?)ができれば、上記の目的は達成できると分かりましたので、
その方法を教えていただけると有り難いです。
(別の方法がある!というのであれば、そちらでもけっこうです)
目下のところは、
>>278 で紹介されている方法が逆ポーランド記法でなく、
通常の論理式対応のものであればベストです。
なんで逆ポーランドなのか考えた方がいいんじゃまいか?
>>282 WEBブラウザなどは使わず、swf単体で行う
スタンドアローンなら、Exeでパブリッシュという方法もある。
但し、1.5MB以上になる。
ちなみに、俺も同じような文章解析(出力データ解析)をやっているが、
対象の文章の内容と解析目標によってStirigクラスのメソッド&プロパティを
ひたすら使い分けることでしか解決は無いと思う。
まずは、簡単な特徴的な文章(1行程度)を試しにパースしてみよう。
284だ。 Stirigクラス → Stringクラス
下記のアクションをムービークリップで動かしました テンキー1・3で(座標変化で)速度をリアルタイムで変化させたかったのですが、fpsが低い設定の場合キー入力しても再描画時にムービーの速度に変化がないことが 多々でした。(試しにfps1で試したところ再描画までに入力したキー分の加速が反映されていませんでした) onClipEvent (load) { x_move = -1; kasoku =10; function movetxt() { if (Key.isDown(97) == true) { x_move -= kasoku; } else if (Key.isDown(99) == true) { x_move += kasoku; } else { } _x += x_move; } } onClipEvent (enterFrame) { movetxt(); } 試しにキー押しの回数を調べるASを配置してみたところ、そちらは再描画までに押した回数が反映されていました。 この時も速度のほうは再描画までに反応を受け付けない時間(偶然や読み込みラグなどではなく)もあり結果は反映されませんでした。 読みづらい文・説明で申し訳ありません。 速度のキー入力リアルタイム変化について良い方法などありましたらお願いします。 環境はMacromedia Flash Pro8 AS2・WindowsXP・IE6です
>>286 要は左右方向の加速度を変化させたいということか?
movetxt();内で結果位置を指定するのではなくて、(外に出して)
onClipEvent (enterFrame)内で指定したら?
288 :
Now_loading...774KB :2007/09/13(木) 15:43:32 ID:hmnUxqDU
>>286 setInterval() を使い、fpsに関係なく描画させる場合には updateAfterEvent() もある。
>286 単純に変数操作はon()でやればいいんじゃないの?
292 :
Now_loading...774KB :2007/09/13(木) 16:52:43 ID:JtxDSMb2
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) キーコードの認識で質問です。 2つのキー:BackSpaceとShiftを同時に押した時のアクションをキーリスナーで指定 したいのですが、上手く出来ません。 下は第一目標として、traceで "Back/Shift" を出力させるものですが何も出ません。 myKey = new Object(); myKey.onKeyDown = function() { if (Key.getCode() == 8 && Key.getCode() == 16) { trace("Back/Shift"); } }; Key.addListener(myKey); どうしたら良いでしょうか? 動作はプレビュー上で行い、『キーボードショートカットを無効』にチェックを入れて います。なお、BackSpace,Shift各単独のキー動作はOKです。
293 :
286 :2007/09/13(木) 17:02:05 ID:ZpQ1BVYO
とても早い書き込みありがとうございます。
>>287 さん
>加速度の変化
そうです。ただ、何故かわかりませんが1fpsで動作させ、1s内にテンキーで加速を2回押しても一回分しか受け付けていない。
という状況に困っていました。
実際のところ1fpsという低速で動かすことはないのですが、より正確な方が良いと思いまして。
enterFrameにて指定してみましたが低速だと同じ結果になってしまいました。
OnClipEvent(enterFrame)では難しいのですかね。
説明不足な点が多くてすいません。
>>290 さん
描画のタイミングを上げ判定の隙間を減らすことが出来るんですね。
これなら限りなく処理が自然になりそうです。早速試してみようと思います。
お二方レス大変感謝です。
OnClipEvent(enterFrame)の判定の落とし穴の方も解決したら書き込みさせて頂きます。
>>282 数式解析のプログラムは結構出回ってる。
swfだけで完結させたいというなら、そのコードをActionScriptにパースすりゃよい。
ただし、ものすごく面倒
ちなみにそういう処理は、昔の死に言語が活躍してる時代の処理。
斜め上な開発をしていることに気づき、設計を考え直した方がよい。
295 :
286 :2007/09/13(木) 17:54:29 ID:ZpQ1BVYO
>>290 さん
すいません更新忘れて見落としていました。
クリップイベントにしなければ上記のようなことにならないんでしょうか。
ご指摘ありがとうございます。
>>292 getCode() の値が8かつ16ってあんまりだろw
if (Key.isDown(8) && Key.isDown(16)) {
trace("Back/Shift");
}
297 :
292 :2007/09/13(木) 18:23:52 ID:JtxDSMb2
>>296 有り難うございます。
getCode()の値は1つなんですね。
>>297 trace()すればわかることだし、ヘルプにも書いてあるよ。
戻り値は数値; 最後に押したキーのキーコードを表す整数。
299 :
273 :2007/09/14(金) 02:28:42 ID:IuUz1TI2
お返事が遅くなってしまいすみません。 >283 やはり「難しいから」なんですね。取り組んでみて実感しました。 >284-285 >まずは、簡単な特徴的な文章(1行程度)を試しにパースしてみよう。 こちら、>278のソースを参考に作ってみようと思います。 方針としては、文字列を先頭から1文字づつバッファーに貯めて行き: ・数字が出現したら、演算子か英文字(プロパティ)が出るまで連続して読み込み、 そのバッファーを「項」の配列にスタック ・演算子が出たら、数字か英文字が出るまで連続して読み込み、そのバッファーを 「演算子」の配列にスタック ・それ以外はプロパティ。演算子が出るまで連続して読み込み、そのバッファーを 「項」の配列にスタック ・演算子の文字列に優先順位をつけ、その優先順位の高い演算子を 挟んでいる項を演算し、後ろの項をスプライス(削除)し、この項とその次の項を…… を繰り返して行全体を処理 ・優先順位が0になるまで、着目優先順位を1づつ下げながら繰り返す ・項が1つになったとき、それが解 カッコの処理は、開きカッコがでたら、その後の開きカッコの個数を数え、同数の閉じカッコが出たら バッファーの内容を引数にして再帰呼び出しするようにしてみます。 >294 最悪、上記のことで実現できなければ、JSONで [ { "left" : "a", "fugou" : "==", "right" : "1", "renketsu" : "||"}, {式}, {式} …… ] 等の記述をするように、仕様を考えてみます。
301 :
286 :2007/09/14(金) 15:42:25 ID:RvW1gVaf
setInterval()で無事それらしく出来ました。ご指導感謝します。 ありがとうございました!
回転させるには_rotationを使えばいいんですよね? でも、回転するにあたって中心位置指定をするASはあるのでしょうか? rootを回転させたいので・・・
>302 無い。それと、_rootは回転しないじゃろ? 全体を回転させたいなら、1つのMC(中心が回転軸)に全部ぶっこむ 中心を左上等にする必要があるなら、mcの中心を回転軸とした円運動の式を組む
305 :
Now_loading...774KB :2007/09/15(土) 02:40:22 ID:u0PubEBn
質問です。Flashをメールクライアントとして使いたいと思っています。 受信したデータなどをローカルに保存したいんですが、ファイル入出力 ができません。 ここで質問なんですがFlashとCなどを組み合わせてFlashにない機能を Cなどで補うことは可能でしょうか? たぶんアプリケーションにFlashをのせたらなんかできそうな気がするんですが 調べてもなにもでてこないのでご教授願えれば幸いです。
ローカルファイルの読み書き程度ならAIRとかZincで十分できるけどな
FLASHってXML出力ならできたよな確か
>>305 ヘルプでExternal APIあたりを参照する
>>308 出力というのが、ファイルとしてという意味なら不可能
310 :
273 :2007/09/15(土) 09:35:24 ID:bmSbVgmK
お返事が遅れて、申し訳有りません
(仕事が忙しかったもので……)
>300
最初はXMLも考えたのですが、それよりはJSONのほうが
記述もデバッグもしやすいだろうと考え、フリーのJSON for ActionScript2を
使用しています。
なお、
>>284 の「1行のパース」は成功し、きちんと演算ができました。
ただし、カッコの部分で手間取っているので、らちが明かないようなら
設計を見直し、
>>278 の逆ポーランド記法を参考にさせていただこうと思います。
目処がつきましたので、これにて
>>273 の質問は終了とさせていただきます。
皆様、ありがとうございました。
>309 余談だが、FlashCommunicationServerは、「flv形式なら生成できる」 という仕様を利用して、ログファイルを生成していたりする。 ファイル書き込みができないのはセキュリティ面では意義のあることだが、 アプリ作成側にとっては、けっこう頭が痛い。
力を貸して欲しい。どうしても出来なくて困ってるorz
環境:FlashCS3 ActionScript3.0
目的:niconicoやYoutubeのFLVを、ローカル環境でストリーム再生する
現在、niconicoでテスト中。
手動でCookieを取得し、FLVのURLを渡しているが、開けないとのエラーが出る。
ルートタイムライン(StageにFLVPlaybackを配置)
import fl.video.*
//var FLVPlayer:FLVPlayback
FLVPlayer.source = "
http://smile-com32.nicovideo.jp/smile?v=188420.86636 "
また、FLV再生コンポーネントのFLVPlaybackが「?」を含むURLや「.flv」を含まないURLを
弾く仕様になっていたので、NCManagerの下記個所を修正
NCManagerクラスの変更箇所(614行:条件分岐をコメントアウト)
//if ( parseResults.streamName.indexOf("?") < 0 && parseResults.streamName.slice(-4).toLowerCase() == ".flv" ) {
canReuse = canReuseOldConnection(parseResults);
_isRTMP = false;
_streamName = parseResults.streamName;
return (canReuse || connectHTTP());
//}
>>312 ニコニコは外部アクセス遮断してるかと思われ
Flash CS3 (ActionScript 2.0) 外部ファイルで、下のような、回転を制御する簡単なサンプルを作っているんですが、 class Rect { private var mc:MovieClip; private var mc1:MovieClip; function Rect(base:MovieClip) { mc = base; mc1 = mc.attachMovie("rect", "rect", mc.getNextHighestDepth()); mc1.onEnterFrame = function() { this.rotationMovie(); }; } function rotationMovie():Void { mc1._rotation++; } } をつくり、flaファイルのフレームアクションで var rect:Rect = new Rect(_root); という感じで記述しているんですが、何も起きませぬ; どこかマズいんですかね・・・ ステージ上のMCのMC名・リンケージ名は共にrectです。
SWFがクライアント側で動くから、サーバーが遮断してるわけじゃないと考えてたんだけど違うのかな? 再生ページのタグをそのままコピってローカルで動かしても正常に動くから、 自作のFLASHからFLVへアクセスできないのは、自分のソースが間違ってるか、 デフォルトのプレイヤーにASからIDか何かを送るような処理いれてるかだと思うのだけれど。。。
>>314 >this.rotationMovie();
この前にtrace(this);してみる
317 :
314 :2007/09/15(土) 17:52:33 ID:0Z2nAOxw
>>316 手直ししたら、動きました。リンケージ名の登録忘れと、
var scopeという変数を利用して、
function Rect(base:MovieClip) {
mc = base;
var scope = this;
mc1 = mc.attachMovie("rect", "rect", mc.getNextHighestDepth());
mc1._x = 200;
mc1._y = 200;
mc1.onEnterFrame = function() {
//trace(this);
scope.rotationMovie();}
}
のようにしたら、動きました。
でも、scope.rotationMovie()の部分は、this.rotationMovie()にすると動かないんですが、thisはダメなんですかね・・・
318 :
Now_loading...774KB :2007/09/16(日) 00:40:31 ID:Yqhe3f+A
305です。回答ありがとうございます。 >306 それはヘルプにのってたんでしってるんですが、fscommandの引数として巨大なデータを。 渡せるんですかね?バイナリとかも。 データ取得とかはFlashでして、それをCに渡して保存とかはやっぱり 無理だと考えたほうがいいですかね。 どうもありがとうございます。 Airはつくったのをインストールしてもらわないと使えないので 今回は使おうと思っていません。
>317 クラスファイルでのスクリプトと、FLAファイルでのスクリプトでは 入れ子にした場合のthisの指すものが変わるんだよねぇ……。 FLAファイルでは、thisをつけると入れ子、つけないと「スクリプトを 記述している部分」を指すので、スマートな記述ができたんだが クラスだとそうならない。 なんで、こんな仕様にしたんだろう。 マクロメディア(アドビ)は、おそらく意味があってやってるんだろうけど。
>>319 mc1のonEnterFrameの中じゃ this が指すのは mc1 になる
それだけの話じゃね? と思ったんだけど
何かよく分からんないので
もう少し詳しく説明してほすぃ
>320 ああ、言われてみれば>317の挙動はたしかに正しかった。 俺が言おうとしていたのは、thisをつけるかつけないかの 挙動の変わり方が、タイムラインとクラスファイルで 異なってしまうってこと。 >317の例で言うと、 var scope=this; mc1.onEnterFrame = function() { scope.rotationMovie(); }; } の部分は、タイムラインでの記述のようにこう書かせて欲しい。 mc1.onEnterFrame = function() { rotationMovie() }; } クラスファイルでは、thisが無くてもthisを記述したようにふるまってしまうが タイムラインでは、thisが無ければ(非公式テクニカルガイドで言う)デフォルト参照をする。 で、おれはこっちの書き方のほうが、thisの有り無しで処理を分けられるので スマートに思えるわけ。いちいち外側から参照を渡すってのは気持ち悪いんだな。
322 :
317 :2007/09/16(日) 10:39:57 ID:saZ5CG3k
>>318 >>319 ああ、分かってきました。
scope.rotationMovie();はRect自身のメソッドだけど、
スコープの範囲でthisだと(function内なので)ダメってことですかね。
mc1.onEnterFrame = function() {
rotationMovie()
};
}
と書くほうが分かりやすいですな
323 :
317 :2007/09/16(日) 10:40:55 ID:saZ5CG3k
スコープの範囲で > スコープで
AS2は付け足しだからレガシー仕様引っ張ってるからな。 そういう意味では初心者にこそむしろAS3をおすすめしたい。
327 :
Now_loading...774KB :2007/09/16(日) 23:19:16 ID:ESTiE0oe
MovieClipのインスタンスを複製したいんだけどどうやるの?
>>327 duplicateMovieClipを使う
>>321 >>322 >>324 なんかおまいら言ってることおかしくないかー?
この場合、onEnterFrameをmc1のメンバにしてるのが変
this.onEnterFrame = function()にすりゃ良い
「rotationで影響を及ぼしたい場所=Rectインスタンス自身」なのに何故、mc1の中に入れ込んじまうんだw
あとthisの有り無しで処理を分けるなんてことやめた方がいいぜ?
読みにくいスクリプトの見本みたいなもんだよ。
thisは省略しない方がいいとか色んな本に書いてるけど、
あれは「参照をちゃんと記述しないとスパゲッティコードになる」って意味だよ
330 :
Now_loading...774KB :2007/09/16(日) 23:43:37 ID:ESTiE0oe
すいません。
>>328 ActionScript3.0と書くのわすれました。
331 :
329 :2007/09/16(日) 23:59:15 ID:5aMPC9TN
ごめw ミス >>thisは省略しない方がいいとか色んな本に書いてるけど、 >>あれは「参照をちゃんと記述しないとスパゲッティコードになる」って意味だよ シンタックスを使ったオブジェクトのメンバメソッド内でのthis省略、ね 書籍などには「thisは省略しない方がいい」などとは書いてないので注意 まぁ普通にドットシンタックスを把握してる人にとっては、デフォルト参照は分かりにくいのではって話です。
>>330 this.addChild(new MCのクラス名()) クラスは自動生成されるから別に作らなくてもおk
>>326 プログラム言語として言えばAS3.0の方がスマートだしわかりやすいよ。
まあ、AS2.0しか知らない人には、今まで苦労して理解したのに。。
っていういうことはあるかもしれんけど。
AS2->AS3の移行で戸惑う人はほとんどいないだろ。 AS1しか書いてなかったからAS3が理解できないってんなら分かるが。
そうだな。
ていうかJavaや.NETから入った俺からすれば、AS2.0を覚えれたのはすごいと思うけどな。
ワケ分からん仕様多いしさ。2.0理解したんなら3.0理解するのなんてすぐだろう
ていうか2.0にどっぷりはまっちゃうと正直危ないと思う
>>322 あんた危ない方向に進んでるよw
>>334 AS1.0-->AS2.0は普通に拡張な感じだけど、3.0へはちと、、、
移行するにしても、相当コーディングし直さなきゃならないとおも
AS2からAS3への書き換えは何度かやったがそんなに大変じゃなかったな。 むしろonClipEventとか使ってるAS1をAS2でOOP化するほうが手間だよ。
338 :
324 :2007/09/17(月) 00:50:23 ID:lLsXrzzj
>>331 >「rotationで影響を及ぼしたい場所=Rectインスタンス自身」なのに
これは質問主にしか分からない事だと思うよ。
掲示されたのがonEnterFrameをmc1のメンバにしているソースなのだから
それをベースに答えるしかないよ。効率や正しい書き方を聞かれたのなら
まったくおっしゃる通りだと思うけど。
僕は デフォルト参照なんてものを初めて知ったので
「ややこしいんだな」と思ったんだ。
OOPなんて言葉まだあったんか。 別にAS3自体を否定する訳じゃないけど、初学者が学ぶには 言語だけでなく概念を理解しなければならないから途中で 投げてしまう人口を増加させてしまうと思う。 エスペラント語ってすっきりしていて便利だよね、みたいな話だと思う。
>>338 ん? 横から入って悪いけれど、それは違うんじゃない?
もいっかいソースやレス見直してみたらどーかな
俺にも、onEnterFrameをmc1のメンバにしてる意味がわからないよ。
そしてソースが動かない原因も、onEnterFrameをmc1のメンバにしてるせいだしね。
提示されたソースが間違ってたから動かないんだよ。見当違いな解決策だすより、そこを指摘するのが妥当でしょ。
341 :
322 :2007/09/17(月) 02:13:05 ID:6fW/4BX0
んーんと、ちょい混乱してるわけですが。 まず、Javaちょこっとかじって来ました。AS始めたばっかりです。 で、指摘されてる部分は、mc1.onEnterFrame...でいいんですよね? この場合 MovieClip(flaファイルに慣れてないので)をあんまり弄らなくても、いい手法かなと思ったんで、こう書いてみたわけですが、異端な書き方なんですかね? あくまで、MovieClip側に何かアクションを起こしたいわけです。 サンプルでMovieClipにextendsさせる方法も見ましたが、そっちのほうが主流なんでしょうか?
>>340 ソースとレスを見直した結果
僕は間違っていました。申し訳ない。
MovieClip を extends するなら
/// 外部ファイル
class Rect extends MovieClip{
function Rect() {
this.onEnterFrame = rotationMovie;
}
function rotationMovie():Void {
this._rotation++;
}
}
//fla メインタイムライン
var rect = _root.attachMovie("rect", "rect", mc.getNextHighestDepth());
rect._x = 200;
rect._y = 200;
みたいな感じかな。
てかなんでみんなクラス内でENTERFRAME使うの? 俺はIntervalの方が、関数名指定するだけで出来るから好きなんだけどなー ENTERFRAMEと違ってスレッド削除にも殆ど制約ないし
>343 俺もsetInterval派。 onEnterFrameで行う部分は、setIntervalにしたほうが色々と便利だし。 (ただ俺は、そこに匿名関数を記述するんではなく、関数名をこしらえて その関数に処理を渡していくのが好き) でも、onハンドラから匿名関数をつないでいくって言うイベント記法は ActionScriptに馴染みのない人でも分かりやすいんだよ。 「対象MCが.どうなったら=処理する{その内容は……です}」 と、一つの塊を見れば一目瞭然だし、 enterFrameだけでなく、loadやpressなどでも同じ書き方ができるので 応用範囲も広い。 イベントを直接管理する記法が主流になれば、いずれ廃れる 書き方かもしれないが、現時点では悪くないと思ってる。
>>342 この場合はthisだからいいけどAS2の場合は関数に処理渡すのもDelegate使う
のが基本と覚えといた方がいい。そうすりゃsetIntervalもonハンドラも使用感は大して変わらん。
>>339 初心者が途中で投げてしまうのは難解さじゃなくてレガシー対策のイレギュラーな処理やバグで
思い通りに動かないからだろ。
毎フレーム処理したい のと 一定時間ごとに処理したい の違いじゃないの?
>>346 そうだよ。setInterval派とかいう派閥はない。処理に応じて使い分ければいいだけ。
どちらの状況でもないときに使う方の話をしてるんだと思うが。”連続して実行させたい”とか。実際コレが一番多い罠
こういう話になるとがぜんはりきる俺様を見てくれって奴が多いんだよ。ほっとけ。
>347 >348の言うとおり、大半の人は「MCを動かす」目的で使う。 そのアプローチが「clipEvent(enterFrame)派」、「onEnterFrame派」 あるいは「setInterval派」などに分かれているのが現状。 他の処理系の人から見れば噴飯ものの分類だろうけど、 これらは「MCを動かす」という目的のもと、同じ分類になっている。 それぞれの意味の違いが分かって、最適のスクリプティングができれば AS使いとしては上級の部類になるだろう。 個人的には、”デザイナー上がり”の人たちも、これらの奥深さに 触れてもらえればと思っている。プログラマと話が通じると楽しいし、 「絵筆」が増えることで、よりアーティスティックな表現もできるはずだから。 ・forループで100個のMCをいちどきにattachMovieするのでなく 10分の1秒ごとにわらわらとattachMovieしたい……setIntervalでattachMovieし 100個になったらclearIntervalする ・ボタンクリックを、ムービーの状態によって違う動きにしたい ……同じイベントトリガを、別のイベントリスナに登録しなおし、各処理は そのリスナのメソッドとして定義しておく ”プログラマ”には簡単すぎるこうした処理も、”デザイナー”には高難易度。 このスレッドは、彼らの架け橋になってくれたら嬉しい。
OOPってもう古い概念なの?
勝手に奥深いとか難しくて高度な事と位置付けたい馬鹿に踊らされてるだけ。可愛そうに。
>>351 全然古くない
ただ「OOPとはこれ」「OOPやらなきゃ馬鹿」とか大上段に構えてる奴らが笑い物になってるだけ
普通に使う考え方
>353 それは良かった。今更ながらFLASH OOPを読んで歓心してた所だ
>>354 あの本は悪くないけど気を付けた方がいい。
よく日本人の英語学習の笑い話で「外資系の会社に、英語は完璧ですという入社希望者が来た
、で、その希望者に『なるほど、じゃああなたはウチの業務がどういうものがご存じですか』と聞い
たら黙ってしまった」というものがあるけれども、あの本はまさにその典型。
FlashOOPが〜とか言う奴は実際にやらせてみるとコードひっかきますだけで、成果だすまでに
以上に時間かかるという事が結構あった。そうならないように、あれはあくまで文法の本だってことを
キモに銘じておいた方がいい。
>352 さっきから気になってるんだが、きみはまさか 「AS=簡単、気軽な言語」とかおもってないかい? キミが相当の知識があることは>355を見てもわかるし、きみにとっては ピクニック気分の言語なんだろう。そこは尊敬する。 でも違う。大半の開発者にとっては、イベントとかクラスとかスコープとかは いまだ「大上段ニ構える」概念だよ。 なぜって、開発者の大半はきみのようなプログラマじゃない。 アーティストだのデザイナーだのと呼ばれる、絵描きさんだからだ。 専門的な訓練をろくに受けていない頃なら、概念を理解するのは 一大事だってことは分かるだろ。 だから、このスレが有るんじゃないのかい?(ちょい脱線気味だけど)
Flashみたいなちょこっとスクリプト書く程度の物に わざわざオブジェクト指向を持ち出してくる輩は哀れ。
それは規模によるでしょ。 フルFLASHのサイトで5000行を超えるASを書いたりしていると 開発技法とデザイナとのやり取りについてあれこれ考えないと いけないなと思うよ。 でも、気にせずクラスなんて使わずにコーディングするけどな! それがActionScriptのお気軽お手軽なところなんだし。
>>358 ゲームならまだわかるけど、フルFlashサイトで5000行もいくものなの?
ていうかオブジェクト指向にするかどうかは行数で決めるの?
プログラムは最終的に思った通りに動けばいい。 過程や…方法なぞ…!どうでもよいのだァーッ!
ウボァ。すごい勢いで挫折しそうなんでエロい人教えて。 1.外部テキストを読み込む 2.読み込んだ文字列をMCに入れる 3.MCのアルファを変化させる って事がやりたいんですが、MCのアルファは変化してもMC内テキストのアルファが変わってくれません。 flash内で事前にテキストを分解(アウトライン化?)しておけばアルファを弄れるのですが、 なるべく、"テキストデータのまま"で処理したいのです。 現在は応急処置として、マスクレイヤーを追加してMCを無理やり透過させていますが、 他の良い方法でなんとかならんでしょうか。
>>362 基本的には、デバイスフォントではアルファ変化とかはできない。
その場合は、テキストを分解じゃなくて、テキストフィールドに必要な文字を埋め込む。
必要な文字数が膨大だと、ファイルサイズも膨大になる。
>>362 アルファベットくらいなら全部埋め込みフォントにすれば透過できたと思う。日本語あるときっついね。
Fla8以降なら一旦bitmapdataにdrawして、それを透過表示するとかでできるんじゃないかな?
システムフォントはアルファ変更できない。 上レイヤに背景色をかぶせてアルファを変えるか フォントを埋め込みにすれ。
>>360 ステップ数は規模の大きさの判断の指針として使える
100行のプログラムと5000行のプログラムが同じコストがかかるとは思えないよね
>>360 俺は仕様追加や更新するかどうかでOOPにするか決めるな。
最初多少手間でも後から相当楽できるから結局楽をしたいことには変わらん。
368 :
Now_loading...774KB :2007/09/18(火) 20:51:57 ID:MvRIbmuP
>>363-365 ありがとごじます。なんと。埋め込みフォント。知らなかったです。
日本語を使わないので英数字のフォントを埋め込んで解決しました。
BitmapData.draw()でフォントを画像データにする方法でも無事透過出来ました。
日本語をダイナミックテキストで扱う場合はこちらの方法が良さそうですね。
ASスレのはずなのにスレチで失礼。
369 :
Now_loading...774KB :2007/09/20(木) 20:18:26 ID:Rm1sHKpH
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) セキュリティについて質問です。 現在swf内部の記述(AS)が読めるソフトが出回っていますが、今のところ 『最も中身が見れない(バレない)方法』にはどのようなものがあるのでしょ うか? つまりは、プロテクトを掛けたいと思っています。 この辺りの技術はイタチごっこでいずれ破られるとは思いますが、一時的に せよ保護したく思っています。 一応、「Flash便利帖」(インフォメディア著 毎日コミュニケーションズ)のp202で パブリッシュ設定 → 読み込みプロテクト は勉強しました。
371 :
369 :2007/09/20(木) 23:30:37 ID:Rm1sHKpH
for文でカウントにiを慣例で使うと思いますが 複数入れ子にする場合も、何か文字があるのでしょうか? for(var i=0〜 for(var ii=0〜 for(var iii=0〜 ii,iiiやi,j,kだとjが見難かったりしますよね?
教科書なら慣例でi,j,kだと思うが、実際には用途に合わせて名前つけたほうがいいんじゃね? page,line,wordとか
>373 なるほど。名前試して見ます。ありがと。
>374 あくまでも俺のやり方だが、>373だと、すでにそのクラスの プロパティとして使う名前とかぶってしまう場合があるので、 ループに使う変数名は自分の中で決めてしまうのも手だ。 たとえば、i、j、k……ときたら間違いなくループカウントだと ルール付けしてしまえば、あとからソースを見たときに 視線がまごつかなくてすむ。 反面、その変数が何を表しているのかは、ソースを読まないと 分からなくなるわけだが。
昔は
>>373 みたいな意見も多かったけどねー
今はループ用一時変数は統一されてるのが殆どじゃない? 下手につけると衝突するでしょ
ループカウンタはカウンタとしてわかる無意味な短い変数名ならば良いと思う。 一般的に使われているi,j,kとかx,y,zとか。3次元以上のループはわかりにくいので 設計をデータクラス(レコード)にしたりして次元を落として見やすくする方が良いと思う。 ソースを読んでいてfor文の中にrow,colとか書いてあるとカウンタではなく、 なにか意味のある、スコープが大きい変数かなと思って思考が一時停止しちゃう。
LoadVarsのonLoadで困っているのだが、知恵をお貸しいただきたい。 LoadVarsのsendAndLoadで読み込んだ結果を、関数の結果として返したいのですが onLoadが完了する前に関数の結果がnullとして返ってしまう。 function hoge(str) { var re = new LoadVars(); var se = new LoadVars(); se["msg"] = str; se.sendAndLoad(URL, re); re.onLoad = function(success) { if(success) { //ここがreturnされてほしい return re["result"]; } } } test = hoge("aaa"); trace(test); //null うまく関数の結果を返す方法が分かる方、ご教授ください。
メインの方でsetIntervalを使って処理待ちすればいいのではないかな
読み込み待ちできない奴多すぎるな >onLoadが完了する前に関数の結果がnullとして返ってしまう。 これ自分で書いてて当たり前だと思わないんだろうか?
>378 詳しくソースは追い掛けてないけど、ひとつ気になったことは、 なんでイベントハンドラの処理を定義する前に sendAndLoadを実行しちゃってるのかな、ってこと。 定義前に結果が帰ってきたら、結果の行き場がない。 それじゃー空振りするでしょ。
>>379 その方法でうまくいきました。
setIntervalとか、意外と使いやすいですね。
>>380 いやぁ、薄々は感じていたのですが、じゃあどうすれば、というところで
躓いていたわけです。
>>381 確かに。順序を入れ替えました。
え、ちょっと待て。 setInterval使わないとロード待ちできないなんてことないだろ? なんのためのLoadVarsだよ。
>>378 非同期読み込みなんだからコールバックにしたほうがいい
>378の問題点は、関数の中にコールバックを作った上で、 その処理結果を戻り値としたことだな。 test = hoge("aaa"); trace(test); で、イベントを待ってtraceしてくれるわけではないから 戻ってきたときにはすでにtraceは終了してるわけだし。 でも正直、俺も「関数の戻り値」として、こういう結果を取得したいと よく思う。いちいちルートにコールバックを書くのはなんかダサく見えるし、 かといってコールバック内に処理(この場合はtrace)を入れるのも 見づらいし。 みんなは>378みたいなことをしたいとき、どうやって書いてる?
function hoge(str){ var se:LoadVars = new LoadVars() var re:LoadVars = new LoadVars() se["msg"] = str re.onLoad = function(success){ (success) ? re["LoadFin"]() : false } se.sendAndLoad(URL, re) return re } var test:LoadVars = hoge("aaa") test.onLoadFin = function(){ trace( test["result"] ) } 普通にコールバックしかねぇだろw
re["LoadFin"] → re["onLoadFin"] のミスス(´・ω・`) ASにスレッド同期処理があればいいんだけどね。
AS2.0まではデコンパイラもそれを防ぐソフトもあるようですが、 AS3.0では同様のツールはまだ出ていないんでしょうか? もしくは根本的に必要がなかったりするのでしょうか。
remoteProxy系は2も3もDispatcher使うのが普通だろ。ツールなんかいらんはずだぞ。
ゴメン酔っ払ってたから読み間違えた
>>388 すでにAS3仕様書が公開されてるから何をやっても無駄。
>>392 つーことは、AS2.0は仕様書が公開されていないから、デコンパイラを防ぐソフト
が出来たということ?
393 :
392 :2007/09/24(月) 16:04:24 ID:aQ9jWDUm
いかん、自問してもうた。 392は391への質問です。
>>392 バイトコードをアセンブラのごとく読めば
何やってるのか普通にわかるって事。
ASも8以前のswf仕様書も全部公開されてる
>>394 レス有り難うございます。
デコンパイルに対するプロテクトといっても、結局は一時的なものなんですね。
396 :
Now_loading...774KB :2007/09/25(火) 03:05:53 ID:TBCw7Ifp
質問です。
波の動きをさせようと以下のスクリプトを組み込んだが、
1回再生したっきり何も起こりません。
コードを記載してあった
http://hakuhin.hp.infoseek.co.jp/main/as/move.html#MOVE_03のサンプルは連続再生出来ています 。
何がおかしいのでしょうか?
onClipEvent (load) {
length = 30; // 波の幅
rot = 0; // 角度(位相)
dx = 5 // x方向移動量
posy = 150; // 元となるy座標
height = 100
}
onClipEvent (enterFrame) {
_x = _x + dx; // x方向移動
rot = rot + 10; // 0〜360まで一定の速度で増やし続ける
if(rot > 360) rot -= 360; // 360を過ぎると0に戻す
rad = rot * Math.PI/180; // 角度からラジアンに変換
_y = posy + Math.sin(rad) * height; // y方向移動
}
永遠にx軸+方向に波打ってる。ステージから消えたときにでも_xをリセット
うお、ID同じだ。初体験w 自演じゃないからねw
可能性は否定しないけど これは自演ですね
はいはい自演自演
>>398 俺も経験あるから、
じぇんじぇん気にすることないよ。
>401 この勇者にActionScriptの女神の加護があらん事を
403 :
397 :2007/09/25(火) 05:26:45 ID:TBCw7Ifp
じぇんじぇん気にしてないよ。 取り合えず今日1日は初心者を装って色々デキル訳だな。 ちょうどいい機会なんで悩んでたこと質問してみる。XMLを拾って解析するコードです。 var XmlLoad = function(e:MouseEvent):void{ var myLoader:URLLoader = new URLLoader( new URLRequest(XMLのURL) ); function XmlLoadFin(e:Event):void{ /*var root_MC:MovieClip = this.root as MovieClip; root_MC.addChild(myXML)*/ ←質問2を試してみた残骸 LoadXmlNode( XML(myLoader.data) ); ↑質問1の箇所。ターゲットパス(thisやMC化したroot)を付けると動かなくなる。何故・・・ } myLoader.addEventListener(Event.COMPLETE, xmlLoadFin); } XmlRead_btn.addEventListener(MouseEvent.CLICK, XmlLoad) var LoadXmlNode = function(myXML:XML){ for each (var Node:XML in myXML.Person.(@id==2).*){ Node_txt.text += Node.name() + ":" + Node + "\n" } } AS3.0です。ごちゃごちゃ書いてますが、したいことは 1.もしLoadXmlNodeの呼び出しにターゲットパスを付けるとしたら…、一体何を?(root_MCやthisでは動かず) 2.もしもmyXMLを引数でなく、どちらの関数からも直接参照できる、フィールド変数(?)として、 「関数XmlLoadFinの中から」宣言するにはどうすれば?(2.0ではverを省略すれば出来た。見辛いソースになるし廃棄された?) 3.myLoaderのListenerは、ステートメントから出て、myLoaderが消えた時に一緒にデリートされてるのかな? 動くには動くので特に困っているわけではないのだけれど、分からないので何となくスッキリしなくて。。 良ければ誰か教えてほしい、長文スマン
何で無名関数なのか、また2.0のxmlNodeなのかよくわからんな MC化したrootとは↓みたいなことかな。できないかな。 var rootas:MovieClip = this.root as MovieClip; リスナーは明示的にremoveするか、弱い参照にしておくと良いと思う。 いずれにせよclassと3.0のxml,xmllistを使った方がスマートにできるよ。
ああ、XmlNodeって名前のxmlか、、、
関数名とか変数名は大文字で始めないでほしいなあクラスかと、、、あ、もう書きませんすみません。
どどんまい
なんでIDが同じだと >今日1日は初心者を装って色々デキル訳だな。 になるんだ?
ノリで言ってみただけだよ。マジにとらえないでくれ
あぁ、そうなの。 IDが同じじゃなくても初心者を装えるだろって思ったから どういう意図で言ったのか知りたかったの。
CS3は持ってるんですがしばらく使えない環境に行くことになりました その間にもAS3の勉強をしたいのですが、どうにも本を読んでいるだけでは頭に入ってきません 実際いじりながら覚えていこうと思うんですが AS3対応のフリーのFlashソフトなどありますか?
マウスを動かすと、ball(mc)が動くASでaddListenerで質問です myObject=new Object(); myObject.onMouseMove = function() { ball._x +=1; }; Mouse.addListener(myObject); or ball.onMouseMove = function() { this._x +=1; }; どちらでも動きますよね なんでmcだとaddListenerは不要なんでしょうか?
>>
>412 そんな理屈は考えたことがないなあ。動けばOKなんだし。 しいていえば、Mouse.addListener()はMouseオブジェクトで、 MovieClip.onMouseMove()はMovieClipオブジェクトだからだろうな。 アーキテクチャの違いってやつだろ。好きな方を使えば良いんじゃね?
>>403 コード書いて動かしてみたがワカランカッタ(´・ω・`)
なんでターゲットパスつけると動かなくなるんだコレ。何か3.0の階層構造にまだ慣れないわ
取りあえず3つ目の質問だけになるが、ハンドルしてるObjectが消えたらハンドラも消えたはず。by.NET
>>404 無名関数にするとブロック内でカプセル化されるんじゃなかったっけ
3.0じゃどうかしらんけど、2.0のときは衝突避けるときに使ってた希ガス
てかローダー部分は置いといて、XML読み込みの部分はE4X使ってるみたいだし十分スマートだと俺はオモ
417 :
Now_loading...774KB :2007/09/26(水) 14:56:56 ID:VGxwHg04
質問です。 AS3で、SharedObjectを使ってFlash Communication Serverとデータの送受信 をするときの挙動なんですが、AS1のときは 共有オブジェクト.data.xxx = 1 のような書き方でサーバーの共有オブジェクトにデータが送信されたんですが AS3で同じ書き方をしてもデータがいかないようなんです。 サーバーサイドASで共有オブジェクトを更新するときに使う、 setPropertyメソッドを使えばいけたんですが、ヘルプを見ても、それは サーバーサイドで使うメソッドだと書いてあります。 AS3ではsetPropertyを使わないと送信できない仕様になったんでしょうか。 どうかご教授ください。
winXP・flash8使用です。 actionscriptをある程度使える人になりたいと思って 早1年が過ぎましたが 未だに、ボタンにgotoAndPlayつけたりとか そんなのしか出来ません。 力技でアニメーションを作るのは得意ですが AS使わないと出来ない事も出来るようになりたいです。 何をどう勉強すりゃいいの?状態なんですが おすすめの参考書籍教えてください。
本なんて頼りに出来ない 知らないものは自分で触って感覚的に覚えるのが一番
>>403 その書き方だとfunctionのスコープがたぶんglobalになる。よってrootは無意味。
ターゲットを書かないその方法が一番楽なはず。つーっか汚なすぎ。
通信専用のクラス作ってそこに処理まとめればいいじゃん。
>>412 MovieClipクラスにはonMouseMoveという名前のイベントハンドラがあるから。それだけ。
2.0では、addEventlistenerはイベントハンドラ無いオブジェクトでもイベントをハンドリングできるために用意されているもの。
あとは、違う名前の関数を使ってハンドリングしたい時に使うもの。
424 :
412 :2007/09/26(水) 16:03:50 ID:sqrU35UX
>422>412 MovieClipクラスに用意されてんのね 何かのクラスでextendsした場合は楽なんかな 処理がaddListenerより早いし 納得した。thx
425 :
418 :2007/09/26(水) 19:12:04 ID:f57mUZHx
>417 クライアントサイドで、 SO.data.foo=1; SO.setDirty('foo'); をためしてみて。
質問しにきました。 Flashの背景色をASで変えたいのですが、描画メソッドしか方法ないですか? 直接弄れたら楽だろうなと思って・・もしそういうASあるなら教えてもらえますか?
>>427 回答するために書き込みます。
AS2.0ならColor クラスや flash.geom.ColorTransform クラスがあります。
ただしFlashの背景色ではなくムービークリップの色を変えるものです。
actionscriptで日付フォーマットができる関数って無いですかね? trace(dateFormat(new Date(),"yyyy/mm/dd"); //2007/09/27 とか。
>>429 エクセルのセル書式設定のようなのは無いよ。自作汁。
createEmptyMovieClipもattachMovieも for文内で複数作ると最後の奴しか表示されないんですが、 これはなぜですか?
>>431 関数引数の深度が全部同じだからだろう。
同じ深度に存在できるMCは1つだけ。
>>432 解決しました。ありがとうございました。
再び質問お願いします。 矩形ツールでムービークリップをつくり、 その1フレーム目にイベント(onRollOut,onRollOver)を記述してるんですが、 思うように動いてくれません。 画像をロードする前ならちゃんと記述したとおりに動いてる事はわかったんですが、 ロード後になるとイベントの関数も呼ばれてないようです。 マウスが上に行ったら画像を表示(_alpha = 100)し、マウスが離れたら非表示(_alpha=0) としたいです。 よろしくお願いします。
>>434 矩形ツールによるMCと画像とのパスの関係は?
とりあえず、trace(This)などであちこちチェックしよう。
435です。訂正。 trace(this)です
437 :
Now_loading...774KB :2007/09/28(金) 00:55:16 ID:/cBcPpAg
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) hitTest()のヒット先MC枠ついて質問です。 root上に2つの円形MC(en1, en2)があり、en1をドラッグさせ、en2の座標を使って en2へのhitTest()をさせています。ASは、 on (rollOver) { if (this.hitTest(_root.en2._x, _root.en2._y, true) == true) { trace("en2塗り内の点にHit中"); } } ※ on (press) と on (release) で、en2をstartDrag()とstopDrag()をする。 これは目的の通り動作したのですが、次に if (this.hitTest(_root.en2._x, _root.en2._y, false) == true) として、en2の枠を対象に hitTest()判定を試みましたが何の反応もありませんでした。変更部分のASは下の 通りです。 on (rollOver) { if (this.hitTest(_root.en2._x, _root.en2._y, true) == true) { trace("枠にHit中"); } } 目的通りなら、「枠にHit中」と出る筈ですが何も出ません。 アドバイス願います。
438 :
437 :2007/09/28(金) 00:59:10 ID:/cBcPpAg
上記、訂正します。 下段の変更部分は、正しくは on (rollOver) { if (this.hitTest(_root.en2._x, _root.en2._y, false) == true) { //hitTestの第3引数は、true じゃなく false trace("枠にHit中"); } }
439 :
437再 :2007/09/28(金) 01:10:05 ID:/cBcPpAg
すみません。質問文中に他に細かい間違いがあるので、改めて質問します。 ((以下の質問文でお願いします)) ---------------------------------------------------- 環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) hitTest()のヒット先MC枠ついて質問です。 root上に2つの円形MC(en1, en2)があり、en1をドラッグさせ、en2の座標を使って en2へのhitTest()をさせています。ASは、 on (rollOver) { if (this.hitTest(_root.en2._x, _root.en2._y, true) == true) { trace("en2塗り内の点にHit中"); } } ※ on (press) と on (release) で、en1をstartDrag()とstopDrag()をする。 これは目的の通り動作したのですが、次に if (this.hitTest(_root.en2._x, _root.en2._y, false) == true) として、en2の枠を対象に hitTest()判定を試みましたが何の反応もありませんでした。変更部分のASは下の 通りです。 on (rollOver) { if (this.hitTest(_root.en2._x, _root.en2._y, false) == true) { trace("枠にHit中"); } } 目的通りなら、「枠にHit中」と出る筈ですが何も出ません。 アドバイス願います。
441 :
434 :2007/09/28(金) 14:36:18 ID:Wb48mEx6
だめでした。 onPressイベントで画像のロードとtraceをやったんですが 画像ロード後にはonPressイベントが呼ばれません。 flash professional 8です。
>>441 画像読み込んだら基本的にフレームに書いてたスクリプトは無効になるよ。
読み込み完了後にあらためてイベントハンドラ設定しなおすか、
その矩形上でさらに画像読み込み用のMCか、createemptymovieclipで作ったMC用意して
そこに画像読み込めばいいんじゃないかな。
>>440 そうです。矩形(境界ボックス)です。Flash8のヘルプを読み直すと
shapeFlag: Boolean は、指定したインスタンスのシェイプ全体を評価するか (true)、
境界ボックスだけを評価するか (false) を指定するブール値です。このパラメータは、
x 座標と y 座標のパラメータでヒット領域を指定する場合にのみ指定できます。
ということなので、
if (this.hitTest(_root.en2._x, _root.en2._y, false) == true)
という判定には意味が無いようです。
つまり、このif文の記述は、en2の境界ボックスを判定基準に使っているので、実質
this.hitTest(_root.en2) と同じと考えてよろしいでしょうか?
引用に座標でしか機能しないって書いてアンジャン
445 :
Now_loading...774KB :2007/09/28(金) 20:16:01 ID:x25CWzzO
acl=2.5; brk=1.5; n=1; rmt=100; function copy(){ ball.duplicateMovieClip("ball"+n,n+10); for(i=1;i<=n;i++){ this["xRnd"+i]=Math.random()*rmt-rmt/2; this["yRnd"+i]=Math.random()*rmt-rmt/2; this["xm"+i]=_xmouse+this["xRnd"+i]; this["ym"+i]=_ymouse+this["yRnd"+i]; } this["ball"+n].onEnterFrame=function(){ this._x+=((this["xm"+n]-this._x)*acl)/brk; this._y+=((this["ym"+n]-this._y)*acl)/brk; } n++; } st.onRelease=function(){ copy(); } のonEnterFrame内のthis["xm"+n]とthis["ym"+n]にfor内のthis["xm"+i]とthis["ym"+i]を渡したいのですが、 onEnterFrame内でthis["xm"+n]をtraceするとundefinedが出ます。どうしたらいいでしょうか?
酷いなこりゃ
>>447 パスが違うんだろ。とりあえずtrace(this);
>>448 ball+iの変数にアクセスするのにはどう指定したらいいんでしょうか?
↓こんなんありえないですし…。
this["ball"+n]["xm"+n]
>>449 おまえ、なんでレス無視して自分思考してるんだよ
レスする意味無いじゃん
traceしたのならその結果どう思うかとか書けよ
>>450 すみません。
onEnterFrame内のtrace(this)は_level0.ball1、
for内のtrace(this)は_level0、
ということでonEnterFrame内のthis["xm"+n]を_root["xm"+n]に変えてみたのですが
undefinedです。
もう少しヒントを…
>>445 ballをduplicateMovieClipして、それぞれにメソッドを割り当てたいの?なら、
ball.duplicateMovieClip("ball"+n,n+10);
を1回しかやってない以上、ムリだ。
同時に、thisの理解に不十分なところがある。むしろこっちがマズイ。
いま手元にflashがないので検証はできないが、次のを参考にしてみて。
var acl=2.5;
var brk=1.5;
var n=1; //何を表現したいのかを良く考えて、妥当な値にすること
var rmt=100;
function copy(){
for(i=1;i<=n;i++){
//thisにballというMCがあると仮定
this.ball.duplicateMovieClip("ball"+i,i+10);//「ball1」等の名称でデュプリケートする
var xRnd=Math.random()*rmt-rmt/2;
var yRnd=Math.random()*rmt-rmt/2;
this["ball"+i].xm=_xmouse+xRnd;
this["ball"+i].ym=_ymouse+yRnd;
this["ball"+i].onEnterFrame=function(){
this._x+=((this.xm-this._x)*acl)/brk;
this._y+=((this.ym-this._y)*acl)/brk;
}
}
このスクリプトでやりたいことが良く分らなかったから、n回のデュプリケートおよび
おのおののプロパティ、メソッドを定義する例を示したが、君のやりたいこととは
異なる可能性もあるので、そこは自力でやってほしい。
まずはthisの意味、とくにonEnterFrame内のthisとその外側のthisとの違いを、
もういちど勉強しなおしてみよう。
>>452 解決しました。
ありがとうございました。
>453 それはよかった。でも、なぜさっきのがダメで今のがいいのかという 理屈を理解しないと、また同じことをしようとしたときに行き詰まるから、 面倒がらずに勉強して欲しい。 あと、こういうことをやるので有れば、クラスというものを勉強して そこで各MCの挙動を一気に定義した方が、のちに繋がると思う。
455 :
Now_loading...774KB :2007/09/29(土) 03:00:34 ID:1NUzXdGg
>>455 System.setClipboard()
Selectionクラス
で可能。
onMouseDown()でクリックを感知するMCの上にボタンを配置する、という状況で、 そのボタンを押した時に onMouseDown() の処理をさせないようにするには どうしたら良いでしょうか?
>458 Button._enabled=false;
>>459 ありがとうございます。
ボタンを無効化ではなくて、ボタン領域内で、
下のMCのonMouseDown()を無効化させたいのですが、これは無理でしょうか?
460ですが自己解決しました。 ボタンのマウスオーバーを監視してフラグを立て、 onMouseDownでそのフラグを参照して分岐処理するようにしました。
FLASH5です loadMovieで外部ファイル(png)を読み込みたいのだけども読んでくれない。 試しに同階層のjpgで試した所問題無く読めたのですが、PNGってサポートしてない? ちなみにプレビューでも特にエラーは吐き出されていない。
>>462 Flash5では無理。確か8以降対応ではなかったかな
>>463 そうかありがとう。
でも8以降って随分後回しな扱いなんだな。。
>>464 そうだね。
PNGを読み込んだswfを作ってそれを読み込むことで代用できなくもないけど、どうかな。
>>465 いいアイデアだけど
定期的に自鯖から自動生成されるpngを読込みたいので固定じゃないんだ。
convertコマンドで同時変換して読込む事にしたよ
FLASH5って、、何年前のソフトだよwww Flash5-->FlashMX-->FlashMX2004-->Flash8-->FlashCS3
>>467 1. 古くて対応してない、困った
2. どうせ買うなら最新
3. 値段的に手が届かない or 踏ん切りがつかない
4. あ、少し工夫すればなんとかなるじゃん
以下1から繰り返し
でも流石に新しいのほしいお
MXでいいと思うよ
470 :
Now_loading...774KB :2007/09/29(土) 22:54:25 ID:1NUzXdGg
>>457 遅くなりましたがどうもありがとうございました。
質問です。環境はWIN2000, FlashMX2004Professionalです。 マルチウィンドウのRPGゲームを作ろうとしています。 その際、マウスではなくキーボードによる操作で行わせたいのですが: ・通常のフィールド移動なら、主人公を動かす(正確にはマップをスクロールさせる) ・コマンドウィンドウを開いたら、カーソルを動かし、ボタンで決定 ・メッセージパネル表示中は、ボタンで次の文に進む ・戦闘中は、戦闘用のウィンドウからコマンド決定。メッセージ用パネルに実況文を表示。ボタンで次の文章を読む などと言ったように、キーボード操作を受け付ける対象が頻繁に変わります。 またウィンドウやフィールド、メッセージパネルは、それぞれ「dialogue_mc」「fileldMap_mc」「message_mc」の中に attachMovieClip()することで、管理しやすくしようとしています。 この切り替えを、Key.addListner(ウィンドウ、マップもしくはメッセージパネルのMC)で行なおうと思っていますが、 オブジェクト指向を考えて、ウィンドウ自体の操作とリスナーの切り替えは、分離しようと考えています。 しかし、それをどのように実現して良いのか、思いつきません。例えば、 1.各ウィンドウ等に、「決定ボタンを押したとき()」「カーソルキーを押したとき()」のメソッドと、「どのウィンドウ等 から操作を受け渡されたのか」のプロパティを用意 2.初期設定では、「fieldMap_mc.マップ」がリスナーである 3.コマンド表示ボタンが押されると、「開くウィンドウ」「自分自身」を、_rootのリスナー管理用メソッドに渡す 4.リスナー管理用メソッドは、「開くウィンドウ」に示されたMCをattachMovieClip()しそれをあらたなリスナーとし、 今までのリスナーを削除 とした場合、ウィンドウなどは別々の階層構造を持っているので、階層情報ごと「_root.リスナー管理用メソッド」に 渡さねばなりません。そうなるとウィンドウごとに対象ウィンドウの階層構造を既に持たなくてはいけなくなり、 ウィンドウとリスナー管理の分離が難しくなってしまいます。 こうした場合は、どのように管理するのが妥当でしょうか?
そんなもん普通にウィンドウごとにイベントハンドラメソッド作っとけよw 考えすぎのOOP中毒患者だな。お大事に。
>>471 もう一歩先の考え方を取り入れないとだめ。
状態遷移とか、タスクシステムとか。
>472 実は最初はそう考えていたんですが、 その時に操作を受け付けたくないウィンドウ等(=操作対象)も 複数存在します(たとえば、マップにウィンドウを1枚重ねたとき等) この場合でも、「カレントではない操作対象のイベントを無視する」 ようにしなくてはなりません。 そうなると、例えば「fieldMap_mc.マップ」から「dialogue_mc.コマンドウィンドウ」を 表示させる際、fieldMap_mc.マップ.イベントハンドラ=null」としたうえで dialogue_mcに内にattachMovieClip()することになりますが、 このコマンドウィンドウは必ずしもマップから開かれるとは限らないため、 ここにイベントハンドラを記述すると、消したときの制御の戻し先が 1つに限定されてしまいます。 「開きもとによって、イベントハンドラ内でswitch等を使い処理を分岐させる」 ということも、のちのデバッグや仕様変更の妨げになるので避けたいところです。 以上のように煮詰まってしまい、Selectionクラスのようなフォーカスを管理する クラスを使う方を考えたのです。なので逆に、ウィンドウごとに管理できれば それで他の操作対象との分離は果たせると思いますので、うまい方法をご存じの 肩がいれば、教えていただきたいと思います。
475 :
471 :2007/09/30(日) 20:16:01 ID:Uzv0anZG
(>474も>471です) >473 わかりました、取り急ぎそのキーワードで検索してみます。 ありがとうございました。
>>475 473も言ってるがタスクに乗せたら簡単に出来る
突然なんですが、このスレってWikiないですよね? 状況別のTipsみたいな感じでまとめるようにしたら需要ありますかね?
案件別の事例の解決法 何をどうしたら良いか分からない人へアドバイス これ以外はググレば分かるし、これをどうやってwikiにするんだる?
>>477 それってASの解説サイトみたいになるんじゃないる?
質問の解答は、大抵リファレンスやGoogleにある。 それに乗ってない解答は、プログラムの組み方等、概念的な質問が多いので、 Tips化は難しい。OOPやアルゴリズム系の本を嫁。としかいえない。
●質問をする前に、Googleで↓のように検索をかける。FLASH系の過去ログ全体からレスを検索できます。 「"質問したい内容" site:f9.aaa.livedoor.jp/~fcafe/index.php/2chlog/test/read.cgi/」 その後、引っ掛ったページから、Ctrl+Fなどのページ内検索を利用し、該当項目を探し出す。 例:getURLコマンドについて調べたい場合 getURL site:f9.aaa.livedoor.jp/~fcafe/index.php/2chlog/test/read.cgi/ こんなのがあってもいんじゃね? 過去に同じ質問がなかった訳ではないし。たまーに俺も利用してたりする。
あ、ちなみに上のコマンド使って検索すると、時々Googleさんに 「申し訳ありません・・・ウィルスまたはスパイウェアが自動的にリクエストを送信しており〜〜」 みたいな感じのこと言われるけど、Google側の問題なんで気にしないでね
>>477 ある。絶対にある。
でも大変だと思うよ。
484 :
477 :2007/10/02(火) 04:35:41 ID:qTEiSYTO
なるほど・・自分自身質問はしないまでも、スレを流し見してて「あ、これ試してみようかなー」っていうことが多々あったので Wikiを思いついたのですが、とりあえず今回は見送りということにしてみます。
>484 いや、やるんだ!人の意見に流されていたらチャンスを逃すぞ 君がやりたいと思ったことをやらないと後悔が待ってるぞ
486 :
471 :2007/10/02(火) 22:51:38 ID:SFJCwra1
>>473 >>476 あれからタスクシステムについて調べたのですが、
シューティングゲームを例に出している物が多く、よく理解が
できませんでした。今のところの理解は:
・タスク管理をするクラスを_rootに作成
・初期のタスクは、ある操作対象(例えば「_root.fieldMap_mc.マップ」)にセットしておく
・マップから呼び出す出すウィンドウを「コマンド」および「システム」にする場合は、
「マップ」のポインターを「コマンド」と「システム」としておく
・決定ボタンが押されたとき、ポインターをたどって、「コマンド」ウィンドウを表示
・この時、コマンドは戻り方向のポインターとして「マップ」を持っている
・「コマンド」ウィンドウが消滅したとき、戻りポインターをたどって「マップ」に
制御を移す
という程度なのですが、おそらく根本的に理解が足りていないと思います。
どのようにアプローチしていけばいいのか、あるいはどこか解説している
サイトがありましたら、教えていただければと思います。
>>486 ウィンドウを子タスクとして生成すれば処理しやすいかなぁ。
子タスク動作中は親タスクの実行を停止するようにしたら
再帰的にウィンドウを何個でも作れるし。
488 :
Now_loading...774KB :2007/10/03(水) 04:59:28 ID:hMF8jjqW
質問です! 体験版のCS3を使っています。 現在、Flash上で外部画像を読み込み、その読み込んだが像に落書きをしたり拡大・縮小できたりするツールを作成しています。 最初からつまづいているのですが、質問させてください。 xmlを使ってFlash上で画像(jpg)を読み込みました。 それをビットマップに変換したいのですが、どのようなActionScriptの記述をしたらいいのか分かりません。 Flash上でJPGをビットマップに変換する事は可能でしょうか? 質問です! 体験版のCS3を使っています。 現在、Flash上で外部画像を読み込み、その読み込んだが像に落書きをしたり拡大・縮小できたりするツールを作成しています。 最初からつまづいているのですが、質問させてください。 xmlを使ってFlash上で画像(jpg)を読み込みました。 それをビットマップに変換したいのですが、どのようなActionScriptの記述をしたらいいのか分かりません。 Flash上でJPGをビットマップに変換する事は可能でしょうか? 質問です! 体験版のCS3を使っています。 現在、Flash上で外部画像を読み込み、その読み込んだが像に落書きをしたり拡大・縮小できたりするツールを作成しています。 最初からつまづいているのですが、質問させてください。 xmlを使ってFlash上で画像(jpg)を読み込みました。 それをビットマップに変換したいのですが、どのようなActionScriptの記述をしたらいいのか分かりません。 Flash上でJPGをビットマップに変換する事は可能でしょうか? 質問です! 体験版のCS3を使っています。 現在、Flash上で外部画像を読み込み、その読み込んだが像に落書きをしたり拡大・縮小できたりするツールを作成しています。 最初からつまづいているのですが、質問させてください。 xmlを使ってFlash上で画像(jpg)を読み込みました。 それをビットマップに変換したいのですが、どのようなActionScriptの記述をしたらいいのか分かりません。 Flash上でJPGをビットマップに変換する事は可能でしょうか?
ワロタw
>>488 xmlを使ってjpgを読み込むってどうやったんだよw
まず自分がどうやってjpgを読み込んだのかのソースを書け。
話はそれからだ。
492 :
Now_loading...774KB :2007/10/03(水) 07:54:58 ID:cGWCv3xx
JavaとActionScriptの違いってなんですか?
>>492 犬と猫の違いって何ですか?って言ってるのと同じだぞw
いい得て妙だな ある段階まではまったく同じなわけだし
>492 双方ちも: ・ECMAという規格(EUにおけるJIS規格みたいなもの)に 基づいているから、ある程度似通ってるし、テクニックも ある程度通用する ・オブジェクト指向の書き方ができる。原則としてプロトタイプベース ActionScript: ・フレーム(処理レート)の概念がある ・MCという表示単位(処理単位でもある)が基準 ・インスタンスの生成に独特のスタイルを持つクラスがある (SharedObject.getLocal、attachMovieClipなど) ・クラスベースのオブジェクト指向の記述ができるようになった JavaScript ・HTMLの要素(エレメント)が、すべてインスタンスとして準備されていて、 そのプロパティを変更することで表示を変更できる ・ブラウザごとの方言がかなり大きいので、複数のブラウザに 対応させるのは大変(フレームワークを使い、軽減は可能) さいきん、JavaScriptも脚光を浴びているので、勉強してみると面白い。
>>495 レスには敬服するが、一応突っ込んでおくw
492はJavaとActionScriptなのだが。
まぁ未だにJavaScriptのコトをJavaって言う人は多いからなw このスレで「Java」って言われると、本人の質問レベルにもよるが、どっちか分からん場合が多い
499 :
Now_loading...774KB :2007/10/03(水) 18:05:10 ID:fAta8ByA
テキスト文字をテキスト色とは違う色で縁取りしたいんだけど ASでできますか?
ムービーが終わったら、指定したURLへ飛ぶようにする記述を教えてください。
>>499 文字を分解して、インクボンドツールで縁取りするのは駄目か?
>>502 シーンにレイヤーを追加して、最後のフレームをキーフレームにして
getURL("
http:// 〜"); を記述したのですが、上手くいきません。。。
>>504 最後のフレームいくまえにstopしてるとか何か心当たり無い?
>>505 stopは無いです。むしろstop ():を書いてないので、ムービーがループします。。。
>>507 getURLをFPSが30なら1秒間に30回呼んでるわけだろ?
それが、ずーっとループしてるならどうなるかわかるだろ。
509 :
Now_loading...774KB :2007/10/04(木) 11:26:40 ID:v5miPgjM
Flash CS3 を使ってます。 ActionScript3の質問です。 テキストフィールドを任意の個数作りたいのですが、 コンストラクタとFunctionでの使い方がよくわかりません。 var mesFld:TextField; ←コンストラクタ var i:Number; 関数内 for (i = 0; i <=3; i++) { mesFld[i] = new TextField(); } こんな感じで3つのテキストフィールドを作りたいんですが TypeError: Error #1009: null がでてダメです。 どうやったらいいんでしょうか?
510 :
509 :2007/10/04(木) 11:34:46 ID:v5miPgjM
訂正:上記の場合は4つのテキストフィールドでした。
>>551 private var mesFld:Array; ←コンストラクタ
にしてもダメなんですが、どうしたらいいんでしょう?
未来レスしちゃった。
>>511 へのアンカーっす。
var mesFld:Array = new Array();
それだと配列が4つ出来るだけで型が違うらしい。 var i:Number; var messagE:Array=["メッセージ1","メッセージ2","メッセージ3"]; var mesFld:Array = new Array(); for (i = 0; i >=2; i++) { mesFld[i] .y = 20*i; mesFld[i] .text = messagE[i]; addChild(mesFld); } TextFieldを並べて、メッセージを表示したいだけなんだよ…
>>515 基本的なことが何も出来てないじゃん。そのfor文の終了条件とかよく考えろ。
var messagE:Array=["メッセージ1","メッセージ2","メッセージ3"];
var mesFld:Array = new Array();
for (var i:uint = 0; i <3; i++) {
mesFld[i] = new TextField();
mesFld[i] .y = 20*i;
mesFld[i] .text = messagE[i];
addChild(mesFld[i]);
}
知識もないのに背伸びするとこうなるんだな、と思った・・・ せめてコンストラクタの使い方くらい理解してからオブジェクト配列に進んだ方がいいぞ
518 :
Now_loading...774KB :2007/10/04(木) 21:54:46 ID:sYfm0mAE
>>516 >mesFld[i] = new TextField();
mesFldはまだlengthが0だと思うんで、
mesFld.push(new TextField());
かな
>>518 書いて思ったが、
mesFld[i] = new TextField();
でも自動的に配列伸びてくれるんだっけ?
>>519 var mesFld:Array = new Array();
mesFld[256] = "256のめっせ";
trace(mesFld);
>519 mesFldは配列で、その配列の各要素がインスタンスになっている ということじゃないかな。 mesFld:Array で、 nesFld[n]:TextField ということ。
>>521 それはわかってるけどね
配列のサイズ指定してなくて[i]とかいいんだっけと思ってさ
>>520 からすると、大丈夫なのか
523 :
515 :2007/10/04(木) 23:56:15 ID:pDhMSZxc
>>516-521 色々とありがとう。
実際、コンストラクタとかの知識が全然無いので見よう見まねでスクリプトを書いてる状態です。
教えてくれたスクリプトを見て少し理解が進んだかなって感じです。
ActionScriptって難しい。
>>522 [i]はキーを作ってるだけ、ハッシュ表と同じような感じだが
(i) (())
ωつ (i) (())
(+"="+)
∩_∩ ( ・( ェ)・)
クマはerrorだろw カワイイからいいけど
530 :
Now_loading...774KB :2007/10/05(金) 23:05:21 ID:MbYqf4iv
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) MC内に連続して出現するオブジェクト(MC)の色で質問です。 MC(インスタンス名:XY)内にattachMovie()でmarkAというドット状のMC(識別子名:markA) をrootのonEnterFrameで newMark = "markA"+id; _root.XY.attachMovie("markA", newMark, id, prop); によって円を描く様に並べる前に、出現するmarkAの色を、このフレームアクション my_color = new Color(this); this.onEnterFrame = function() { my_color.setRGB(_root.cn_r << 16 | _root.cn_g << 8 | _root.cn_b); ・・・ ・・・ } のcn_rなどで指定しようとしています。 作成したASを実行すると、確かにmarkAの色は希望した色で出現し、また円を 描いている途中でも色の変更は可能ですが、先頭のドットだけが初期設定の 色(青)のままです。 つまり蛇に例えると、胴体,尾の色は変えられるが、頭の色は変えられない状態 です。考えられる原因は何でしょうか? アドバイスを願います。
>530 先頭のドットをアタッチするとき、 _root.cn_r等には、何が入っているか調べてみて。 trace()を使えばできるはずだ。 未定義なら、定義のタイミングをかえてみた方がいい。
532 :
530 :2007/10/06(土) 00:26:41 ID:GxwfyOES
>>531 レス有り難うございます。1個目の色を調べるためにtrace()を以下のように
したところ、 色= 128, 128, 128 となり、希望の(設定した)灰色にはなっていま
すが実際は、やはり青色です。
if (id == 1) {
trace("色= "+cn_r+", "+cn_g+", "+cn_b);
}
引き続き、調査と細工を試みます。
>>532 文字型になってるのかも試練から足してみて
trace(_root.cn_r + _root.cn_g + _root.cn_b)
534 :
Now_loading...774KB :2007/10/06(土) 00:48:48 ID:h+XnUfIk
境界条件調べるだけだろ。idの範囲は?
>534 記事を見る限りでは「別のウィンドウが開いて」となってるから その中に自作のインターフェースを表示させてるんでしょ。 で、そっからNetConnectionとNetStreamでムービー取得と。
YouTubeってクロスドメイン許してんの?
>537 予想だけど、そう言う契約をそこの企業としてるんじゃないか。 FCSでは、ドメイン単位で許可する事はできるはずだから。
539 :
Now_loading...774KB :2007/10/06(土) 17:03:19 ID:MqQBbmkL
Adobe Flash で作成した fla や swf をactionscriptファイルに書き出す方法ってあるのですか?
>>539 flaのMCなどをASスクリプトに書き出すという機能は、CS3であるけど、たぶん539の思ってることとは違うと思う。
リバースエンジニアリングがしたいのでしょ。
541 :
530 :2007/10/07(日) 00:00:50 ID:wBXoAs42
>>531 , 533
原因箇所が分かりました。出現させるmarkAのイベントハンドラで
my_color = new Color(this);
this.onEnterFrame = function() {
my_color.setRGB(_root.cn_r << 16 | _root.cn_g << 8 | _root.cn_b);
trace("色markA= "+_root.cn_r+_root.cn_g+_root.cn_b);
・・・
・・・
}
としていたのですが、my_color.setRGBの行をthis.onEnterFrameの前に置いた
ところ、先頭のMCが希望した色に変わりました。
どうやら、this.onEnterFrameでmy_color.setRGBが呼び出せた際には元の色で
呼び出され、その後に希望色に変わるようです。
ただし、この場合もその前の場合も trace("色markA= "+_root.cn_r+_root.cn_g+_root.cn_b);
は、128128128で、文字列のままです。
542 :
Now_loading...774KB :2007/10/07(日) 00:00:55 ID:+hy5b/9S
>>540 すんません。
Flash作成 初心者なので根本的に間違ってるかもですが、
現在、Flash MX 2004 で作成したflaファイルが数個あるのですが、
これを asスクリプトに書き出す方法ってあるのかなって思ったのです
今後は asスクリプト にして Flex2 SDK でswfにしたいと思ってます。
flaファイル を 完璧に as化 する事って出来るのでしょうか?
画像等のリソースも出てくるのでしょうか?
CS3でしか無理なのでしょうか?
質問ばかりですいませんがよろしくお願いします。
>>541 trace("色markA= "+(_root.cn_r+_root.cn_g+_root.cn_b));
これで128128128と表示されるならどっかで文字列型化してるんだろう。
_root.cn_r = Number(_root.cn_r);
で一度数字型に変換汁。
544 :
530 :2007/10/07(日) 01:39:51 ID:QXoVJzdr
なんかムカツク礼だな・・・w
trace()の仕様と+演算子の仕様ぐらい解れやw 型チェックはtypeofあたりを使え。 aa=1250; trace(typeof(aa)); aa="1250"; trace(typeof(aa));
>>546 もtypeofを関数だと勘違いしてる気がする
>>548 typeofは前置演算子なので typeof(aa) は ++(aa) と書くくらい不自然だから。
例えばこんなコードで"number"の1文字目の"n"は取れない。
aa=1250;
trace(typeof(aa).substr(0,1));
>>549 それはかまわんが、aaのタイプを知りたいときに、上記では間違ってるってことかい?
正解はどうなの?
ちなみに trace((typeof(aa)).substr(0,1)); としなければだめなのでは?
自分も
>>550 へのID:sMY37Gcxレスが見たい。
演算子だというのはわかるが、シンタックスは「typeof(expression) 」とヘルプにあるけど
それが間違いってことか?
でもtrace(typeofaa)じゃ、aaの型はわからない。
実際どうすべきなのかを教えてほしい。
trace(typeof 10) trace((typeof 10).substr(0,1))
>>553 なるほど、理解した。thx
では、()を使うのは邪道ってこと?
そういう記述よく見るけど、実は正しくないのか?
typeof(aa)とtypeof aaって理解しとかないとマズイ時ある? ムービークリップアクションのボタン系、on(press)なんかだと thisあるなしでターゲット変わるみたいな trace((typeof 10).substr(0,1))は括弧つきでも けっかは変わらんからいいけど
環境 win2000 flash8 質問です、以下のようなコードで変数 videoList を function(a){} の中で作った場合に function(a){} の外でも使用する為にはどのように書いたらいいのでしょうか? function(a){} の外側に書くと配列の値が消えているようです ----ここから----- System.useCodepage = true; txtVars = new LoadVars(); txtVars.load("data.txt",txtVars,"GET") txtVars.onData = function(a){ videoList = a.split(","); } ------ここまで------
>>557 videoListをfunction(a){}の外に宣言する。
>>556 loadの引数はurlじゃないのか?
取得できているのかどうか、aの値をチェックしてないじゃん。
559 :
556 :2007/10/08(月) 00:56:46 ID:qlH8uS6u
------ここから------ System.useCodepage = true; txtVars = new LoadVars(); txtVars.load("data.txt",txtVars,"GET") txtVars.onData = function(a){ videoList = a.split(","); trace(videoList[0]); } trace(videoList[1]); -----ここまで----- このような書き方で videoList の値を確認しています trace(videoList[0]); では適切な値が表示されますが trace(videoList[1]); では値が入っていません
>>559 trace(videoList);
して配列全部をチェックしてみ。
ちなみにaの値(生の値)をチェックしろと書いたわけで、加工後の videoListをチェックしろとは言ってないよ。
562 :
556 :2007/10/08(月) 01:23:39 ID:qlH8uS6u
trace(a);とtrace(videoList);の結果は同じで data.txtの中身が表示されています function(a){} の外では共に undefined になっています
>>562 それなら
>>557 でしょ。
System.use....の下行にでも
var videoList:Array;
としてみれば。
564 :
556 :2007/10/08(月) 01:38:49 ID:qlH8uS6u
563の方法も試しましたがダメなようです function(a){} の中の変数名と外の変数名が同じでも別の変数として値を持っていると思うのですが ちょっと判りません
>>564 onMouseUp = function(){
trace(videoList);
}
でクリックしてみ。
もしくはテキストフィールドを作ってそこに表示。
>>564 すごく大雑把で分かりにくいだろうけどとりあえず説明すると
txtVars.onData〜trace(videoList[0]);の処理はイベントハンドラ言うて
data.txtの読み込みが完了したというイベントが
通知されて初めて実行されるから、多分
>>564 の思っている
処理順番とは違う。
>>559 だけの処理の順番としては
txtVars.loadでtxtVarsオブジェクトにdata.txtを読みに行ってらっしゃいと命令
(この時点では読み込み自体はしていない)
↓
txtVars.onDataにdata.txtを読みに行ったtxtVarsオブジェクトの読み込みが完了した時に実行させる
処理の内容を設定(この時点では処理内容の設定だけでonDataの中の処理が走らない)
↓
trace(videoList[1]);※videoListなんて変数ここでは初めて出てきて知らないからundefined
この下でいくらvideoListの内容をtraceしてもundefined
↓
:※アクションフレームを抜けてtxtVarsオブジェクトがdata.txtを読み込みに行って、それが完了するまで
:Flash上でいう1フレームか数フレームか詳しく分からないけど待つ
↓
txtVarsオブジェクトがdata.txtの読み込みを完了したので、
ここでonDataに記述してある処理を初めて実行する。
videoList = a.split(",");でここで初めてvideoListという変数が現れて
かつ代入処理で特に注釈とかないから自動的にvideoList変数を_rootに定義。
trace(videoList[0]);は先に変数が定義されているので普通に表示される。
てな感じ。
>>559 のtrace(videoList[1]);の位置でいくらvideoListの中身を確認しても
その時点ではonDataの中の処理が走ってないから値は入らないよ。
567 :
556 :2007/10/08(月) 02:22:52 ID:qlH8uS6u
>>566 trace(videoList[0]);とtrace(videoList[1]);の表示が逆になっていたのはそういうわけなのですか
解説ありがとうございます
問題は判ったのですが解決方法がわかりません、1フレーム目に上記コードを書いてgotoAndStop(2);で2フレーム目に飛ばし、2フレーム目でtrace(videoList);するもやはり値は入っていません
>>567 色々方法はあるし、セオリーとか自分も良くわかって無いけど
とりあえず簡単な方法としては
1フレーム目の最後のgotoAndStop(2);は無くても勝手に2フレーム目に行くから削除して、
2フレーム目を空白フレームまたは空白キーフレームにでもして
3フレーム目のアクションに
if(videoList != undefined){←読み込み完了したかの判定。videoList変数の定義の仕方で判定式が変わるかも
trace(videoList);← 一応確認用、配列として読み込まれていたら(1,2,3とデータ毎に中身がカンマ区切りになっているはず)
gotoAndPlay(4);←4フレーム目に飛んで、そこから読み込み完了後の処理を行う
}else{
gotoAndPlay(2);←読み込みが完了してない場合、2フレーム目に飛ぶ
}
とでも書けば、いけるはず。
data.txt読み込み完了まで、2フレーム目と3フレーム目を行ったりきたりする感じ。
読み込み完了すれば自動的に4フレーム目に飛ぶと。
if(videoList != undefined)の部分はあくまで読み込みが完了したかどうかの判定で
>>559 の処理でいけば読み込み完了時にvideoList変数が定義されることを利用してるだけで、
読み込み完了フラグ用変数を用意しておいて
先のonDataの中で読み込み完了フラグ用変数に値を入れて、その値かどうかの判定とかでもOK。
とりあえずこんなとこ。
569 :
556 :2007/10/08(月) 03:07:10 ID:qlH8uS6u
(なぜコンプリートイベントでフレーム移動しないのだろう・・・?)
>>571 他意はないんだが、何が初期化されてないんだ?
「なんだまた読み込み待ちか」と思って
>>378-386 と書き込もうと思ったんだが、
まったく別のレスが連なってたんで少々驚いてる
外部ドメインにある画像にドロップシャドウをつけようと思っています。 サーバにswfを置かずに、ただswfを実行した際にはきちんと影がつくのですが、 サーバにアップしたとたん影が付かなくなってしまいます。 原因がどこにあるのか調べたのですが分かりませんでした。 どうしたらサーバにアップしたときにも影が付くのでしょうか? よろしくお願いいたします。
>>573 FlashPlayerのバージョンあげてみたら?
>>572 なんでファイル読み込みのときにエラーチェックしないんだろうか。
そういうサンプルソースとかが普通に出回ってるのかな。ということで。
あとloadの引数は1つでurlだしsendAndLoadの引数とは違う。
ヘルプのonLoadのサンプルソースでは引数3つで書いてあるけどw
内部的にどのように処理されてるかは解らないけど、第一引数だけ有効で後は無視なのかなw
>>575 あーいや、ID:kVg3lbT6のレスの内容は何となく的を得てたから分かるんだけど、それ以外がちょっと分かりづらくてね。
てか
>>575 が言ってる「エラーチェック」ってのは「デバッグ」のことか?
確かにエラーチェックと言えなくもないが、大抵それで思い浮かべるのは例外処理のコトなんで少し困惑した。
つーか「loadの引数は3つ」ってのは俺も未だに謎だが明らかに本人のミスだと思ったのでスルーした(´・ω・`)
577 :
573 :2007/10/09(火) 03:04:40 ID:9Y7ORIFH
>>574 言葉が足りませんでした。
外部ドメインにある画像以外にはドロップシャドウが付くんです。
なので余計に分からなくて…
>>573 >どうしたらサーバにアップしたときにも影が付くのでしょうか?
Flash8と9の両方で試したけど、ローカルとサーバーでドロップシャドウの違い
というのは発生しませんでした。
というか、ドロップシャドウ機能は画像がローカルかサーバーかを区別していないはず。
サーバーからの画像読み込みは時間がかかるから、画像を読む前に画像サイズを決め打ちした
処理が入ってるのかなと想像しますが、プラットフォームもコードも示さないんでは
適切な答えは返ってこないと思うよ。
>>577 >外部ドメインにある画像以外にはドロップシャドウが付くんです。
セキュリティサンドボックスが適用されるから同じドメイン以外のものはbitmapdataとして扱えないよ。
読み込んで表示するまでができることの限界。
580 :
Now_loading...774KB :2007/10/09(火) 14:59:54 ID:C8j8AshE
画面の左上にEnterFrameの度に増えるメーターのようなものを 描きたいんですがそれをすべてActionScriptでやるにはどうすればよいのでしょうか?
>580 mc._xscale=0; mc.onEnterFrame=function(){ this._xscale+=1; }
582 :
Now_loading...774KB :2007/10/09(火) 18:08:38 ID:rU2+dtCL
Fla8です。 ブラウザに縦横100%表示でフル画面表示できるようにswfを配置し、 ブラウザの大きさによって拡大縮小できるようにしています。 特定の縮尺以上に小さくしたくない(1024*768)のときは ブラウザにスクロールバーを出す方法はありませんでしょうか。 100%表示だと無限に縮小されてしまいスクロールバーも出ません。
583 :
582 :2007/10/09(火) 18:12:23 ID:rU2+dtCL
追記 ASは下記のように記述することで必要以上に縮小できないようにできました。 w = Stage.width; h = Stage.height; if (w<=1024) { w = 1024; } if (h<=768) { h = 768; } ただし、ブラウザを1024*768以下に小さくするとFlash部分が縮小されないが 画面から切れてしまい、スクロールバーも出ないので困っております。
584 :
573 :2007/10/09(火) 19:00:40 ID:awnazd73
>>579 ありがとうございます。
サーバにアップさえしなければ影がつくのはなぜなんでしょうか?
>>582 そんなのはユーザにとって迷惑で使いづらい
>>584 ローカルはサンドボックスの対象外だから
>>572 onLoadInit
このイベント使え
588 :
Now_loading...774KB :2007/10/10(水) 09:33:54 ID:290Y5orQ
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) CGIによるメール送信で質問です。 「Flash ActionScript 逆引き大全550」(ITフロンティア著,秀和システム)のp563を参考に メールを送信を試みましたが出来ませんでした。getURL内の abc@xxx は宛先です。 何処が間違いか見当がつきませんので、とりあえずボタンMC内のASを全て書きます。 なお、タイトルはmailSubjectTで、本文はbodyMsgTです。 on (release) { System.useCodepage = true; //エンコード方式をShift-JISに変更 mailSubjectT = escape(mailSubjectT); bodyMsgT = escape(bodyMsgT); //タイトルmailSubjectTと本文bodyMsgTを一旦URLエンコードする this.getURL("abc@xxx/cgi-bin/mailtome.cgi", "_blank", "POST"); //メール用信用デーモンにPOSTでパラメータを送る mailSubjectT = unescape(mailSubjectT); bodyMsgT = unescape(bodyMsgT); //URLエンコードを元に戻す } アドバイス願います。
>588 >試みましたが出来ませんでした これだと、問題をどう特定していいのかが分からない。 「出来ない」とは、どういう状態になっているの? たとえば、 ・サーバにデータが送信されない ・サーバに送信されているが、結果が帰ってこない ・予期しない○○という結果になる などなど。 詳しく分からなくても、画面がどう変化したとかは分かるでしょ? 答える側は、そう言う情報から答えを探るから、出来るだけ 「出来ない」ではなく「どうなったか」を伝えて欲しい。 で、ソースを見て判断すると、 this.getURL("abc@xxx/cgi-bin/mailtome.cgi", "_blank", "POST"); でthisをつけているなら、変数にもthisをつけた方がいいんじゃないか。 (ボタンアクションはthisの扱いにレガシを引きずってるから、これが 引っ掛かっている可能性がある) もし理解できるなら、LoadVarsクラスを使うことを、強くオススメしとく。
590 :
Now_loading...774KB :2007/10/10(水) 13:14:08 ID:25V476Oo
TextInputの境界線を消すにはどういうスクリプトを書いたらいいのでしょうか? setStyleとか調べたんですが、方法が見つからなかったです。
591 :
_ :2007/10/10(水) 13:50:54 ID:FtRfQ8y8
ActionScriptだけを使用してで座標(100,100)に縦横80,50の長方形を MCというムービークリップとして描くにはどうすればよいのでしょうか?
592 :
Now_loading...774KB :2007/10/10(水) 14:13:14 ID:25V476Oo
>>591 import flash.display.*;
var mc:MovieClip = new MovieClip();
var bitmapData:BitmapData = new BitmapData(80, 50);
bitmapData.fillRect(new Rectangle(0, 0, 80, 50), 0xffff0000);
mc.addChild(new Bitmap(bitmapData));
this.addChild(mc);
>>590 setStyle('borderStyle', 'none'); じゃね?
594 :
Now_loading...774KB :2007/10/10(水) 20:26:56 ID:25V476Oo
595 :
588 :2007/10/10(水) 21:15:56 ID:vLjJ+vOU
>>589 レス有り難うございます。ここでの「出来ない」とは、『宛先(PHS)にメールが届かない』
という意味です。その後、変数のパスに問題がありましたので、修正したところ、以下の
JPGのエラーメッセージが現れました。
http://vista.crap.jp/img/vi9201734354.jpg 黒塗りの後から cgi-bin/mailtome.cgi の部分があり、その後に送りたい文字列が現れ
ています。文字列中に%が頻出するのは、元の送信データを、提案頂いた LoadVars()
でUTF-8にコーディングしているからです。
※元の送信文の構成:
UIコンポーネントによるチェックボックスのtrue/false,数字(1994),アルファベット(fukuda)
漢字氏名(福田),題名(TestCGI)。 これらは、myLV = new LoadVars(); でmyLVオブ
ジェクトを作り myLV = new LoadVars(); でエンコードしています。
LoadVarsによるUTF-8へのエンコードは『逆引き大全550』に載っていますが、これによる
送信方法は分かりません。引き続きアドバイス願います。
※チェックボックとテキスト入力によるアンケートなどの結果を、UTF-8変換し、CGIでPHS
のメアドに送信するのが最終目的です。
そもそも、メール送信CGIは用意してあるの? そのCGIはFlash経由じゃない場合、きちんとメールが送信できるの?
>abc@xxx/cgi-bin/mailtome.cgi なんでメールアドレスとcgiが一緒になってんの? こんなことできたっけ?
>>596 基本的なところに立ち返りますが、通常はメール送信CGIというのを別個に
用意しなけれればならないのでしょうか?
>>597 「逆引き大全550」のSmple545をそのままコピペすると
this.getURL("○○@××.com/cgi-bin/mailtome.cgi", "_blank", "POST");
//メール用信用デーモンにPOSTでパラメータを送る
です。
この部分を含め、ほとんどをそのまま利用しました。このflaファイルそのものをUpしたいの
ですが、著作権上問題があるとみて躊躇しています。
なお、別のプロバイダのメアドを ○○@××.com の部分に使いましたが、同じような
エラーが出ました。
>>598 > 通常はメール送信CGIというのを別個に
> 用意しなけれればならないのでしょうか?
しなければなりません。
600 :
597 :2007/10/10(水) 23:27:03 ID:KI4ImEBG
>>598 >>588 をよく見たら
>メール用信用デーモンにPOSTでパラメータを送る
って書いてあったね。ごめん。メール用信用デーモンってなにか知らないけど
abc@xxx/cgi-bin/mailtome.cgiで送れるようになってるんだろうね。きっと。
cgiを用意できるなら
mailto = "○○@××.com";
msg = "メッセージ";
this.getURL("./cgi-bin/mailtome.cgi", "_blank", "POST");
で送ってcgi側でmailtoとmsgを取得。
用意できないなら
mailto = "
[email protected] ";
subject = escape("件名");
body = escape("本文");
this.getURL("mailto:"+mailto+"?subject="+subject+"&body="+body);
で我慢。
>>599-600 有り難うございます。現在プロバイダにCGIの可否を問い合わせています。(先行して)600さんの
方法で実行しましたが、何の変化(応答)もありません ・・・本来はメーラーが立ち上がって送信
されるのでしょうか?
念のため、ボタンMC内のASを全て書きます。
on (release) {
System.useCodepage = true;
//エンコード方式をShift-JISに変更
mailto = "abc@xxx";
mailSubjectT = escape(_parent.mailSubjectT);
bodyMsgT = escape(_parent.bodyMsgT);
trace("Data= "+_parent.mailSubjectT+", "+_parent.bodyMsgT);
//
this.getURL("mailto:"+mailto+"?subject="+mailSubjectT+"&body="+bodyMsgT);
//
mailSubjectT = unescape(mailSubjectT);
bodyMsgT = unescape(bodyMsgT);
}
間違いをご指摘下さい。
それと、msg = "メッセージ"; で件名と本文が自動的に区分けされるのでしょうか?
>>601 うちではそれでメーラーが立ちあがるよ。
プレビューじゃなくてブラウザ経由で確認してますか?
メールフォームのようにサーバからメールを送るには、CGIが必要でそれは自分で
用意しなくてはなりません。
CGIについての知識が皆無な場合、自分で多少なりとも勉強する必要もあるでしょう。
とにかく、Flash単体でメールを送信することはできません。
ただし、OSに依存する機能ですがメーラーを立ち上げることはできます。
それが、上で解説されているgetURLで"mailto:"を指定する方法です。
ただし環境によって動作が変わったりしますので、件名や本分がきちんと入らないケースも
あるようです。
>>588 その mailSubjectT と bodyMsgT は何にも使ってないようだね。
他の部分に問題がありそう。
そのサンプルの頭に「Sample544の続きです」とか
その章の頭に「環境を整える方法」とか書かれてない?
同じ機能でラベルだけ変えたボタン(movieclipで作成)を複数並べたいとき、 スマートな作りってどんな感じのがありますか? ラベルにテキストフィールドを使ったら簡単だったんですけど、 絵でやろうとしたら、いいアルゴリズムが思いつきませんでした。 最悪、必要なボタンを個別に作ればいいんですけど、その前に 定番のやり方とか、いいアイデアがあれば教えてくださいませ。 ちなみに、やりたいことは単純で、 ボタンを押すとファイルを読んでその内容が表示される。 ボタンごとに割り当てられたファイルは異なり、ラベルの絵も異なる。 読み込みおよび表示用の関数は完全に同じ。 ボタンのラベルは、マウスのon/off、現在表示中、で絵が切り替わる。 これだけです。
>>604 個人的にそういうMCにコード入れたくないので、
MC側は差の発生する最低限必要な絵だけ作って置いて、
AttachClickEvent(mc1, "file1.jpg");
AttachClickEvent(mc2, "file2.jpg");
こんな感じで対応が一覧で見えるようにして、関数側にメインの処理書く。
function AttachClickEvent(targetmc, filename){
targetmc.onRelease = function(){
this.textbox.text = filename;
};
}
この3行目を別の関数にする時クロージャ関係でちょっと苦労するかも。
>>602 すいません。プレビューでやっていました。
>>603 「環境を整える方法」は書かれていません。さも当然のように(誰でも)
メールCGIが使えるような記述です。ただし、手元の本は2005年4月版
なので最新版は分かりませんが。
607 :
_ :2007/10/11(木) 15:20:17 ID:8j07Lqtw
>>592 すいません.それを全部貼り付けて実行したのですが何も出てこないのですが・・
どういうことなんでしょうか?
608 :
Now_loading...774KB :2007/10/11(木) 16:44:00 ID:4NtPYZv5
>>607 ActionScript3で書いてるので、パブリッシュ設定をActionScript3にしないと動かないです。
>607 this.createEmptyMovieClip("box", this.getNextHighestDepth()); box._x=100; box._y=100; box.beginFill(0xFF6600); box.moveTo(0,0); box.lineTo(0, 80); box.lineTo(50, 80); box.lineTo(50, 0); box.lineTo(0, 0); box.endFill();
aというムービークリップを配列mc_a[0],mc_a[1],mc_a[2]に入れて、場所を変えようとしたのですが、うまくいきません。 as3.0です。以下、ソースです。 .fla内 var aaa:contents = new contents(a); aaa.dot(); .as内 package { import flash.display.*; import flash.events.*; public class contents { var my_mc:MovieClip; var mc_a:Array = new Array(); public function contents(mc:MovieClip) {my_mc = mc;} public function dot():void { for (i=0; i<3; i++) { mc_a[i] = my_mc; } mc_a[0].x = 35; mc_a[1].x = 135; mc_a[2].x = 335; }}}
addChildとかをやっていたら、できました。 ご迷惑おかけしました。
(FlashでCGIを使ってメールを送る質問の続き) プロバイダに問い合わせたところ、CGIはそのプロバイダが用意したHtmlによる 掲示板とアンケート用CGIしか利用できないそうです。従って600さんの2番目の ASを使うことにしました。 仕組みは若干変更して、root上に置いたボタン内に on (release) { System.useCodepage = true; //エンコード方式をShift-JISに変更 mailto = "abc@xxx"; subject = escape(subjectT); body = escape(cgiDataT); this.getURL("mailto:"+mailto+"?subject="+subject+"&body="+body); } としました。一応、メーラーは立ち上がり、宛先も希望の abc@xxx になっていまし たが、件名と本文は空白でした。これは602さんのコメントのように、環境依存で入 らないのかも知れません。 とりあえず、LoadVarsクラスによるエンコードは成功していますので、アンケート自体 のAS作成は続けます。 色々、有り難うございました。
>>594 スキンを変える。もしくは、テキストフィールドを使って.border=false;にするとか。
614 :
Now_loading...774KB :2007/10/12(金) 11:08:05 ID:Hf3zl0dE
クラスについて勉強中なのですが、いまいちクラス&インスタンスメンバがハッキリ理解できません ↓はタイムラインに書いていたflvビデオ再生のスクリプトをASファイル用にしてみたのですが 一応動きますがstaticなど使わずつらつらと全部コンストラクタに書いてしまって、これでいいのかなとちょっと不安です クラス&インスタンスメンバ+コンストラクタな正しい形への修正箇所があればご指摘お願いします class FlvPlayer { var connect_obj:NetConnection; var stream_obj:NetStream; var videoSound:Sound; //コンストラクタ function FlvPlayer(flv_video:Object) { connect_obj = new NetConnection(); connect_obj.connect(null); stream_obj = new NetStream(connect_obj); flv_video.attachVideo(stream_obj); videoSound = new Sound(dummy_mc); dummy_mc.attachAudio(stream_obj);} //ビデオ消音 function volumeStop() { videoSound.setVolume(0);} //ビデオ再生 function videoPlay() { stream_obj.setBufferTime( 5 ); stream_obj.play( "video.flv" );} } ↓タイムラインのスクリプト var flvPl:FlvPlayer = new FlvPlayer(flv_video,dummy_mc); flvPl.volumeStop(); flvPl.videoPlay();
AS3の質問です。 ムービークリップが終わってから、 次のムービークリップに行きたいのですがどうすればいいのかわかりません。 var _01:mc_01=new(mc_01); var _02:mc_02=new(mc_02); addChild(_01); addChild(_02); _01.gotoAndPlay(1); _02.gotoAndPlay(1); mc_01(フレーム数は未知)が終わってから、mc_02を始めたい。
>615 AS3って、varでいきなりオブジェクトのプロパティを宣言できるの? AS2なら、「var _01:MovieClip=new Object();_01.mc_01〜」って、 2段階に分けないといけないけど。 あと、_01が終わったら云々の場合、AS2ならこうなる。 ※フレームアクションでの記述例。クラスファイルだと イベントハンドラ内部のデフォルト参照に自動的にthisがつくので 意味が変わってしまう。 var _01;MovieClip; var _02;MovieClip; _01.onEnterFrame=function(){ if (this._currentFrame>=this.totalFrame){ _02.gotoAndPlay(1); } }
Actionscript勉強中です
環境 Flash8 winXP
FLVPlaybackコンポーネントを使用してflvを再生する時に
マニュアルにて
import mx.video.*;
my_FLVPlybk.autoPlay = false;
my_FLVPlybk.contentPath = "
http://www.helpexamples.com/flash/video/water.flv ";
my_FLVPlybk.seek(3);
my_FLVPlybk.play();
と書いてあります
自動再生はmy_FLVPlybk.autoPlay = false;を書けば設定できますが、swfファイルを表示した時にファイルを取得(seek)しないでplayボタンを押した時にファイルを取得する設定にするにはどのように書いたらいいのでしょうか?
(youtubeのような動きで)
618 :
617 :2007/10/14(日) 03:12:14 ID:zWroxzVw
>ファイルを取得(seek)しないで バッファリングの間違いだと思います
>617 ボタンにイベント設定すればいいんじゃね?たとえば var my_FLVPlybk; | スクリプト書く | myButton_btn.onRelease=function(){ my_FLVPlybk.seek(3); my_FLVPlybk.play(); };
620 :
617 :2007/10/14(日) 13:18:33 ID:WOvlYYa8
レス有難う御座います ボタンにイベントを設定する場合、skin(SteelExternalAll.swf)を使っているとそのskinのflaファイルを編集するという事ですか? FLVPlaybackコンポーネントの再生ボタンを指定するにはどうしたらいいのでしょうか?
質問です。 環境:winXP Flash8pro 書出し:ver.8 AS2.0 オープニングムービーを初回訪問時のみ再生し、 次回から表示させないようにするため、 SharedObjectクラスの使用を考えています。 ユーザーがセキュリティの設定でローカルへのデータ保存をOFFに 設定している場合は有効になりませんが、それ以外ブラウザ等で、 環境によってSharedObjectが使えないといったことはあるのでしょうか? 知っている方おられましたら、情報お願いします。
622 :
Now_loading...774KB :2007/10/17(水) 00:32:27 ID:QRs4mHQ+
スクリプトの書き方(2.0)の事で質問させて下さい class Bottons { var MC1:MovieClip; var MC2:MovieClip; var MC3:MovieClip; var MC4:MovieClip; var pressN:Number function Bottons(m1:MovieClip ,m2:MovieClip ,m3:MovieClip ,m4:MovieClip) { MC1 = m1; MC2 = m2; MC3 = m3; MC4 = m4; } function bottonP(pressN:Number) { if(pressN == 1) { MC1.gotoAndStop(2); MC1.enabled = false; MC2.gotoAndStop(1); MC3.gotoAndStop(1); MC4.gotoAndStop(1); MC2.enabled = MC3.enabled = MC4.enabled = true; } if(pressN == 2) { MC2.gotoAndStop(2); MC2.enabled = false; (以下略) 1フレーム目に押される前の絵、2フレーム目に押された時の絵のmcボタン(botton1〜4)を配置し、一つのmcボタンを押した時に 押したmcボタンに付いた数字をbottonP関数の引数に送りチェック 押したボタン自体を押せなくしてフレームを2に移動、その他のmcボタンのフレームを1に&押せるようにする、といった事を打ったのですが ↑のように、変数指定やメゾットをどうもだらだらと書いてしまう書き方しかできません・・・ もっとスッキリとした効率の良い書き方があれば勉強の為にも教えて下さい
>>622 class Bottons {
private var _mcList:Array;
function Bottons():Void {
_mcList = new Array();
}
public function addItem(mc:MovieClip):Void {
_mcList.push(mc);
}
public function bottonP(pressN:Number):Void {
for(var i=0; i<_mcList.length; i++) {
var mc:MovieClip = _mcList[i];
if(pressN == i) {
mc.gotoAndStop(2);
mc.enabled = false;
} else {
mc.gotoAndStop(1);
mc.enabled = true;
}
}
}
}
>>622 状況に合わせて少数のボタンの有効無効を設定するなら、ベタに書いた方が
解りやすいし、後々修正するときにも簡単にできる。
短いコーディングがスマートというわけではなく、解りやすくて修正しやすいコーディングの方が良いよ。
625 :
Now_loading...774KB :2007/10/17(水) 14:05:25 ID:vEXp6IqN
質問です。 テキストフィールドに、stylesheetとtextformat両方を指定した場合 片方しか有効にならないのですが、これは仕様なんでしょうか? 環境は WinXP, Flash8, AS2 です。
Bottonってボットン?
フレームラベルを指定して飛んだときに、1つ前のフレームから再生されるのですが これはそういう仕様なんでしょうか?それともなにかミスが考えられるのでしょうか・・ MX2004です
>>627 そんな仕様はない。
ひとつ前のフレームから再生しているように「見えている」だけ、とか
別のASが邪魔してるとか、移動先のフレームがまだ読み込まれてないって可能性はない?
629 :
622 :2007/10/17(水) 16:34:00 ID:QRs4mHQ+
>>623-624 レスありがとうございました、624様のお言葉も頭に置きつつ、623様の書かれたスクリプトも参考にさせて頂きます
フラッシュを再生したら自動で1度だけ書いたスクリプトを実行させる 文って何?
>627 そのフレームにtrace("通過")とか書いて確認汁。 >631 ルートのフレーム1に onLoad = function(){ ) とか
>>632 それは1フレしか無いときか? それなら俺は
this.onEnterFrame = function() { } 内にフラグ=Trueで実行されるASを書いて、更にonEnterFrame内
の最後にフラグ=Falseとしている。
1回しかTrueの機会がないので、onEnterFrameでも1回しか実行されない。
635 :
627 :2007/10/17(水) 20:14:50 ID:6IAwvrDI
>>628 >>632 traceで確認すると、やはりずれていたので何かscriptを間違えてるみたいです。
いろいろ試してみます。有難うございました。
>>632 つか、onLoadはそういう使い方しないと思う。
フレームアクションで使うもんじゃなくてクラス内での特定の処理用って
野中氏が書いてた希ガス。
>>634 onEnterFrame使うなら、実行の後にdeleteすればよくね?
毎回onEnterFrameで判定させ続けるのは無駄に思えるんだが。
無駄っていうか、負荷がかかるから、 delete this.onEnterFrame; だな。
639 :
Now_loading...774KB :2007/10/18(木) 18:56:03 ID:dcmeTTin
超基本的な質問なんですが、何か処理を常にループさせておきたい時って 皆さんどうされてるんですか?私はいつもsetIntervalを使うのですが、 もっと一般的な方法があるのかと思って質問しました。
641 :
Now_loading...774KB :2007/10/18(木) 21:43:31 ID:dcmeTTin
>>640 onEnterFrameってムービークリップを用意する手間がかかりませんか?
>>641 ASで空のMCをつくるだけならそんなに手間かからんと思う
643 :
Now_loading...774KB :2007/10/18(木) 21:47:43 ID:dcmeTTin
>>642 なるほど。
で、それはsetIntervalよりも一般的に用いられている方法なのでしょうか?
644 :
Now_loading...774KB :2007/10/18(木) 21:55:45 ID:ZIfnorVb
少しスレ違いかもしれないんですが、 ニコニコ動画みたいにコメントをリアルタイムで更新して表示したいんですが、 どうやればいいんでしょうか? setIntervalとかで一定時間ごとに読みに行く以外の方法は。。。?
>>643 現在それが一般的かどうかは知らん。
MXより前は、setInterval()なんてものは片鱗すらもなく
onClipEvent(enterFrame)しかなかった。
それをひきついだ形でonEnterFrameを使う人はいるだろう。
もともとはフレームアニメーションのソフトだったし
マシンスペックが低い時代には
高頻度な描画更新が期待できなかったこともあり、
フレーム単位で設計を考えることが「昔は」一般的であったと思う。
>>639 待機時間を簡単に変えられるsetIntervalの方が都合良い場合が多いと思う。
>>644 Flash側からリクエスト投げた状態で
サーバ側でわざと出力せずにSleepしておくとか。
なんにしろサーバ側の実装が大変なはず。
>>643 普通描画と同期させたいからonEnterFrameを使う
むしろsetIntervalは予期せぬタイミングでよばれてクラッシュを引き起こす恐れがあるイメージがある
setIntervalはプロセッサの負荷に応じてと玉突き状に遅れていくから特殊用途にしか使わないな。
>>647 >>648 予期せぬタイミングって、しかもクラッシュって、、設計自体がおかしいからじゃないのそれ。
特殊用途ってなんだよw
自分は使わなかったから知らなかったけど setIntervalで実行される関数の間隔は onEnterFrame、つまりswf自体の描画フレームレートより 早い間隔に設定しても内部ではsetIntervalの関数が間隔通りに 実行されるみたいね。 てことは描画はあくまで30fpsだけど 入力精度や内部処理が60fps相当なゲームも作れるのか・・・ 色々と面倒そうだけど。
>>649 確かに設計に問題がなければ大丈夫だろうが、
問題を起こしにくいにこしたことがない。
要は、fpsに同期して考える方が設計が楽ってことだと思う。
Flashはどうしても描画に負荷がかかりやすかったから
fpsが出なければsetIntervalが正確でも意味がないということもあるし…。
極端に負荷のかかるループを実行する時は、 setIntervalでsleepの変わりを実現してる。 例)100万回のループ処理がある場合、 for文で100万回まわさずに、 1万ループx100回に分割し、 setInetrval(loopFunc, 10); な感じで実行してる。
>>652 いわゆる待ち時間をつくるのはsetIntervalで普通だけど、
その例は最悪だなw
forループ処理とsetIntervalでのコード実行のコストを考えれ。
>>653 実行コストではなく、
他言語に用意されるシステム割り込み『sleep関数』の代わりと書いているのだが?
例えば1forループ10秒かかる処理があったと過程した場合、どう組むのが最適?
setInervalでループ分割する事でブラウザ&Flashのフリーズを阻止する。
なんてのは、中級者以上なら常套手段だと思うのだがw
実行コスト厨っぽいから先に言っとくけど
「そんな負荷かかる処理はロジックが悪い!」とか言う答えは無しな。
>>654 分散処理で負荷軽減はできるが、その例は良くないってことを言ってるのよん。
forループ10秒かかるってのもすごいが、1万ループを100回に分割って、、、、
サーバー側の処理じゃないんだから、クライアント側ではそんなことは普通しないでしょ。
656 :
Now_loading...774KB :2007/10/19(金) 16:34:42 ID:fpwmazCs
おはようございました。 Windows2000、FLASH MX 2004を使っています。 LoacalConnectionに関して質問させてください。 //受信側 rcv_LCon = new LocalConnection(); rcv_LCon.connect("receiver"); rcv_LCon.rcvTitle = function(a) { //30行くらいの処理 } //送信側 send_LCon = new LocalConnection(); スクリプトで生成したボタン.onRelease = function() { _root.send_LCon.send("receiver","rcvTitle",this._name.substr(5,1)); } 上記のような形で初めてLoacalConnectionを使って作ってみたのですが、送信側のswfで生成した5つのボタンの中でどのボタンを押しても、 一度だけ受信側のswfで関数が呼び出されるのですが、二度目はどのボタンを押しても受信側の関数が呼び出せなくなってしまいます。 プレビューで変数を見てみても、受信側のrcv_LConと、送信側のsend_LConはきちんとずぅっと残っているのですが、 なぜ一度通信した後、以降通信出来なくなるのかが分かりません。 解決方法、または解決方法が記されたページがありましたら、教えていただけないでしょうか? よろしくお願いいたします。
>>655 分散処理って具体的にどういう事?
Javaかなんかとごっちゃに考えていない?
>>657 たとえば、MCを100個attachする。それぞれのスレッドで動くよね。
for文を分割してsetIntervalを100個作ってそれを動かす。そんな必要あるんかw
ごっちゃというか、OOPそのものなんだけどなw
>>655 >>forループ10秒かかるってのもすごいが、1万ループを100回に分割って、、、、
処理内容と動作スペックでは十分想定の範囲。
>>サーバー側の処理じゃないんだから、
>>クライアント側ではそんなことは普通しないでしょ。
これは、クライアントだからこそするんじゃね?
古いマシンだと、Flashに全てのリソース奪われてブラウザがフリーズ状態になる事だってある。
だからこそ細かめにループ分割しておくことで、ユーザの割り込み=キャンセル処理が可能な実装をしておくべきなのでは。
>>659 古いマシンってどんだけ古いんだよw
ってのはさておき、その例では「setInterval使えばfor文が早くなるんだぜ」な感じで
あんまし表現が良くないってこと。そこがきになったんよ。
>>658 いつからムービークリップはマルチスレッドで動くようになったんですか?
私の知っているFlashではforループがどこかで回っていると、他の処理は
並行的に実行されなくなるんですが?
ムービークリップの数だけスレッドができてしまったら、スレッドの切り替え
にえらいコストがかかりそうですね。synchronize機構も無い言語で、
知らないうちにマルチスレッドで動いてるなんて怖い時代になったものですね、と。
for分けたほうが速いなんていってる人はここにはいねぇだろ。よく読めや
>644 NetSterem.send()またはSO.onSync() FCSのスクリプトだ。 ただし、ニコ動は一定時間ごとに更新が働いていそうだから ストリームからの同期ではなく、setIntervalで SOの状態を反映させている可能性もある(負荷軽減のため) たしかAS3からは「setDirty()」で、同期を制御することができるんだっけ? それも使ってるかも知れない。
>>661 例が悪いって言ってるのが解らない奴がいたw
釣られましたごめんなさい
>>658 >>for文を分割してsetIntervalを100個作ってそれを動かす。そんな必要あるんかw
って時点で意味を全く理解していない事がわかったw
あとFlashにスレッドに該当するものは存在しないよ。何をスレッドと思い込んでるん?
>>659 最近のマシンでも1,2秒フリーズするような処理はあるだろ?
それを体感させないくらいの処理に分割する。って事だ。
穴だらのコードだけど、分割例あげとく。 var ONE_TIME_MAX:Number = 10000; var stateObj:Object = {i:0}; stateObj.intervalID = setInterval(this, "loopFunc", 10, stateObj); function loopFunc(stateObj:Object):Void { var sTime:Number = getTimer(); for (var i:Number = 0; i < ONE_TIME_MAX; i++) { stateObj.i++; } trace("loop:" + stateObj.i + " time:" + (getTimer() - sTime)); if (stateObj.i > 1000000) clearInterval(stateObj.intervalID); } ONE_TIME_MAX; の値を下げれば、 クライアント側のマシンは体感的にはフリーズしないが、全体の処理時間は多少伸びる。 ONE_TIME_MAX; の値を上げれば、 クライアント側のマシンは体感的にはフリーズするが、全体の処理時間は早くなる。 用途と想定環境で調整しろってこった。
>>665 スレッド処理といえば解るのかな?スレッド自体プログラムで処理してるわけでしょ。
スレッドが無いじゃんというのはかまわないけど、実際そうだからしょうがないしw
>>666 多少伸びるとか、体感的とか、、ちゃんとベンチマークしたんかいw
たまたま、そんとき常駐ソフトがうごいたとかじゃねーのかw
普通に考えればこんなアホいるわけないんだから、釣りに決まってる。 みんなも釣られるなよ!
>>668 わざわざtrace()つきでサンプルあげたんだから実行してみろよww
・C2D 2.4Ghz / 1ループ100万処理
1.2秒間で完了。処理中は他の処理全てが停止。
・C2D 2.4Ghz / 1ループ5万処理 x 20
1.4秒間で完了。同時(擬似)に他の処理が可能
俺だったら、後者を取る。
>>671 だからさ、そんなの意味無いっていってるじゃん。
純粋なPCで、せめて1000回試行して、、ってつか、1.4秒間に他の処理って何なんだそれ?w
/ ̄ ̄ ̄ \ ホジホジ / ― ― \ / (●) (●) \ | (__人__) | 動けばどうでもいいよ \ mj |⌒´ / 〈__ノ ノ ノ
ポカーン(゜Д゜) 純粋な技術の話が、ゆとり論点「そんなの意味ない」に変わったので、もういいやw 制作の現場でんな事言ったら、 「お前の存在のが意味ねーよw」って言われちゃうんだから(><
>>674 ゆとり発言にはゆとりで返答したんだけど、、、、
膨大にfor,while回す場合は最低限、FlashPlayerに無限ループフラグを建たせない程度に分割する必要はあると思うよ
厳しいようだけどホントにそうだからね
だから釣られんなって
680 :
656 :2007/10/19(金) 18:24:12 ID:fpwmazCs
すいません。分かる方いたら
>>656 お願いします。
>>680 それだけじゃわからんから、flaとHTMLをUpしたら?
>>680 その「30行くらいの処理」に問題があるんじゃないのかな?
trace(a);だけで実験したけど何の問題も起きんよ。
だよなあ。他の言語ならともかく、Flashはループでプレーヤーからブレーキかけられるからなあ。 良く使い慣れてる人ほど、分割する仕組みを考えるわな、常識的に考えて。 脳内の人はどうかしらんけど。
684 :
656 :2007/10/19(金) 19:05:16 ID:fpwmazCs
>>681-682 返信ありがとうございます。
仕事でクライアント企業のために作っているホームページなのでうpする事は出来ないのですが、
>>682 の発言から、テストでLocalConnectionを実験するためだけのSWFを作って実行してみたところ、
何の問題もなく何回でも通信出来ました。
「30行くらいの処理」の中に外部テキストファイルを読みに行ったり、onEnterFrameを作ったりと色々やってるので、
その中の何処に問題があるのか自分なりにテストして調べてみたいと思います。
すいません。ありがとうございました。
686 :
Now_loading...774KB :2007/10/20(土) 13:49:05 ID:2Mx4Dfp7
質問です。 Flashを表示した時に、はじめからテキストボックスにキャレットを表示させて おきたいのですが、どうすれば良いでしょうか。私で調べたところ、 Selection.setFocusでフォーカスを与えられるようですが、 1フレーム目にSelection.setFocus("_root.textFild1");と記述しても キャレットは表示されません。。(文字を打ち込むことだけは出来るようですが) 一般的な方法を教えていただけると助かります。
687 :
Now_loading...774KB :2007/10/20(土) 23:20:33 ID:+I8Fy8oj
class Book1 { var vol:Number = 20; class Book2 { function Book2() { trace(vol); var titleS:Book1 = new Book1(); var titleJ:Book2 = new Book2(); クラスBook2でBook1のvol変数を参照したい場合どうすればいいのでしょうか?読み込みテストでtraceをしています 調べたらpublicを付ければ他のクラスからもアクセス可能とあって、 実際にpublic var vol:Number = 100としても「'vol' という名前のプロパティはありません。」とエラー ただ試しにとtrace(Book1.vol);としてみたら「参照されているプロパティには、静的属性がありません。」とエラーが出ます どうすれば読み込む事ができるのでしょうか?AS2.0です
public function getVol():Number{ return vol; } でどうだ
>>687 そこはBook1.volじゃなくて、titleS.volじゃない?
Book1、Book2てのはあくまでクラスという殻の名前で、
そのクラスの殻をかぶった実体はtitleS、titleJという
クラス変数なのだから。
変数の中身はBook2中のtrace(vol);のとこを
trace(titleS.vol)にすれば多分いける(クラスの宣言の仕方・位置によってはできないけど)。
>>687 場合によってはclass Book2 extends Book1 として継承すべきところかも知れないし、
public static var vol:Number = 20;と静的メンバにすべきところかも知れないし、
Book2のコンストラクタでfunction Book2(b1:Book1)として持たせておいてb1.volと参照べきかも知れない。
正解は687しか分からない。
691 :
Now_loading...774KB :2007/10/21(日) 14:45:22 ID:ac0oRU+C
ものすごい初歩的な質問かもしれんが ステージに自分でMCを配置して そのMCのリスナーをドキュメントクラス(main.as)から登録ってどうやるんですか? var MC_A:MovieClip; MC_A.addEventListener( MouseEvent.MOUSE_DOWN, ふぁんくしょん ); エラー 「null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」 みたいな事になります。 ちなみに、Windows CS3のAS3.0です。 ご教授お願いします。
692 :
Now_loading...774KB :2007/10/21(日) 15:01:11 ID:B82okr/G
FLash Lite1.1でボタン機能を無効にする方法を教えてください。 AS2.0だと button.enabled =false; でボタン機能がむこうになりますが、こんな感じでボタンを作動させない方法は LITE1.1にありますか? _visibleで非表示にもできませんよね?
693 :
Now_loading...774KB :2007/10/21(日) 15:15:13 ID:wjACHB4b
外部ファイルの読み込みがうまくいきません。 FLASHで写真アルバムのようなページを制作しています。 読み込む方のphoto.swfを単独で開いたらうまくいくのですが、 親のmain.swfにload_□□mc.loadMovie("photo.swf"); でphoto.swfを読み込ませると最初のstop();まで読み込み、 次の写真へは送りボタンを押しても機能しません。 これはどういったことが問題なのでしょうか。 分かる方ぜひともお教えください。お願いします。
694 :
Now_loading...774KB :2007/10/21(日) 15:20:45 ID:ac0oRU+C
>>693 たぶん、photo.swfのASに_root何チャラって書いてないか?
mainの中のphotoだからRootはmain.swfになるのよ
っで、AS2.0だよね?
695 :
Now_loading...774KB :2007/10/21(日) 15:28:20 ID:ac0oRU+C
>>693 ちなみに、Rootの設定がAS内でできたような。。。
すまん、わすれた
696 :
Now_loading...774KB :2007/10/21(日) 15:33:41 ID:wjACHB4b
>>694 ご回答ありがとうございます。
最近はじめたものであまりAS1.0とAS2.0の違いも分からないのですが
多分2.0です。
photo.swfの中のボタンに_root記述してありました。
photo.swfのシーン1のタイムラインに飛ばしたいのですが
_rootの代わりに何と記述すれば良いでしょうか?
697 :
Now_loading...774KB :2007/10/21(日) 15:37:19 ID:ac0oRU+C
this.gotoAndPlay( ) だな
>>691 ドキュメントクラスってのがよくわからんが、オーサイズ時にインスタンス名付ければ
そのままそれが使えるけど。
>>692 FlashLite1.1はas1レベルだっけ?ヘルプ見て無ければ無いのでしょう。
>>694 パス指定が合ってるかどうか確認。_lockrootあたりをヘルプで調べてみ。
699 :
Now_loading...774KB :2007/10/21(日) 15:43:41 ID:ac0oRU+C
>>698 あ、ほんまや。。。
ありがとう。
いちいち、宣言しなくてもいいですね。orz
700 :
Now_loading...774KB :2007/10/21(日) 16:10:33 ID:wjACHB4b
693です。 みなさまありがとうございました! _lockrootで解決いたしました。
701 :
Now_loading...774KB :2007/10/21(日) 16:20:09 ID:wjACHB4b
もうひとつ質問です。 親swfからloadMovieで読み込ませている外部ファイルswfの 任意のタイムライン(ラベルをつけてある)に親swfからリンクできますか?
702 :
Now_loading...774KB :2007/10/21(日) 16:29:04 ID:ac0oRU+C
インスタンス名.gotoAndPlay("ラベル名") でいけんじゃね? 親SWFの子SWFにちゃんとインスタンス名を指定してあげること
703 :
Now_loading...774KB :2007/10/21(日) 16:48:04 ID:wjACHB4b
>>702 ご回答ありがとうございます。
親swfに配置してあるボタンに
on (release) {
_root.load_shoppingmc.gotoAndPlay("tee");
}
と記述したのですが、やはり飛びません。う〜む
>>703 親swfのバージョンと、子swfのバージョンは?
あと、trace(_root.load_shoppingmc) でちゃんと配置されてるか試してみた?
705 :
Now_loading...774KB :2007/10/21(日) 17:30:21 ID:wjACHB4b
ご回答ありがとうございます。 パブリッシュの設定はそろえてあります。 trace(_root.load_shoppingmc) はどこに記述すれば良いのでしょうか?
707 :
Now_loading...774KB :2007/10/21(日) 17:43:49 ID:wjACHB4b
出力画面にはundefinedとでました。
パスが間違ってる可能性があるので、見てみてください
709 :
Now_loading...774KB :2007/10/21(日) 17:59:45 ID:ac0oRU+C
load_shoppingmcはインスタンス名ですか? load_shoppingmcを選択して左下のプロパティに「load_shoppingmc」ってでてますか?
710 :
Now_loading...774KB :2007/10/21(日) 18:47:14 ID:QezD4BGt
711 :
Now_loading...774KB :2007/10/21(日) 18:55:56 ID:ac0oRU+C
setIntervalで実行されるファンクション内で時間を取得してるんでは? setIntervalでコンマ単位で実行 その中のファンクション内で1秒たったら実行 みたいな感じかな〜 なんか、力技っぽいけど
712 :
Now_loading...774KB :2007/10/21(日) 19:04:09 ID:ac0oRU+C
またまた質問で申し訳ないんですが。 Flash.swf?a=12 みたいな感じでGETで渡した値ってメインフレームの「a」に入るけど AS3.0のドキュメントクラスを使って作ってるFlashの場合どうやって取得するの? 一応、自分の書いたAS張っておきます。 ■ドキュメントクラス package { public class main extends MovieClip { var a:Number; function main(){ trace( a ); } } } ■メインフレームアクション なし ■結果 null orz...
713 :
Now_loading...774KB :2007/10/21(日) 19:18:51 ID:wjACHB4b
>709 load_shoppingmcはインスタンス名です。 プロパティのところに表示されてます。
714 :
Now_loading...774KB :2007/10/21(日) 20:01:03 ID:ac0oRU+C
>>713 すまん。わからん。
とりあえず、trace(_root.load_shoppingmc)でundefinedって出たなら
そんなインスタンスねえよってことだから
アクションスクリプト書くところの上部分「ターゲットパスを挿入」でみてみたら?
715 :
Now_loading...774KB :2007/10/21(日) 20:18:35 ID:wjACHB4b
>>714 ありがとうございます!
なんとかやってみます。
>>712 trace(LoaderInfo(loaderInfo).parameters.a);
かな?
>>710 >>711 の言う通り。setIntervelは結構いい加減。FPSによってもズレるから
時間とかカウントダウンは都度、PCの時間をチェックした結果を使った方がよさげ。
718 :
Now_loading...774KB :2007/10/21(日) 21:09:08 ID:ac0oRU+C
719 :
Now_loading...774KB :2007/10/21(日) 23:56:42 ID:ac0oRU+C
またまたまた質問で申し訳ない 現在動的にPOSTデータを生成してるんですがうまく動きません。 ご教授お願いします。 動作環境:AS3.0 package { import flash.net.*; public class main extends MovieClip { var PostRequest:URLRequest = new URLRequest(); public function main() { test1(); } function test1(){ for ( var N:Number in PostArray ){ myCString = "c"+N+ "_"; PostStr = myCString + "test"; PostRequest[PostStr] = N; } } } } 結果----- flash.net.URLRequest のプロパティ c0_test を作成できません。 わかりくいソースですが、よろしくお願いします。
720 :
Now_loading...774KB :2007/10/22(月) 00:03:15 ID:LJ9icd3x
環境 OSはWinXP-Pro,ソフトはFlash8-Pro root(ステージ)上のマウスの位置を把握したいのですが出来ません。ASはrootの フレームのイベントとして下を書いています。 this.mouseDown = function() { trace("mouseX= "+_root._xmouse); }; traceが表示されません。どこが駄目なのでしょうか?
>>720 this.onMouseDown = function() {
trace("mouseX= "+_root._xmouse);
};
722 :
720 :2007/10/22(月) 00:28:41 ID:LJ9icd3x
>>719 URLRequestはdynamicじゃない
725 :
724誤爆 :2007/10/22(月) 01:57:03 ID:8gzli1sS
おかしいな、スレタイ確認してから書き込んだのに(ノ∀`)
726 :
Now_loading...774KB :2007/10/22(月) 02:38:42 ID:+xTs4Kq3
>>723 え!!
そうなんですか!?
でも、どうやって動的な変数を作るんですか?
727 :
Now_loading...774KB :2007/10/22(月) 03:15:52 ID:+xTs4Kq3
>>726 URLVariablesですね。。。
自己解決しました。
>>723 ありがとうございました。
729 :
Now_loading...774KB :2007/10/22(月) 16:09:21 ID:MLLh9Prc
間違って 兆速で答えるスレ に書いてしまったのですがこちらにもポストさせて頂きます、申し訳ありません。 AS2におけるMovieClipLoaderについて質問です。 例えば、 _root -testMC -loadingMC という構成でMCを2個置くとします。 testMCには単純に矩形を描画して、とりあえず試しに this.onEnterFrame = function(){ this._rotation += 10; } とか書いて回しとくとします。 で、loadingMC内でMovieClipLoaderを使い、 jpgやswfを何かのタイミングで読み込むと、 ファイルのロード中(onLoadProgressが呼ばれている間)に testMCの回転も止まってしまうのですが、自分の環境だけでしょうか? ロードが終わればtestMCの回転も再開します。 onLoadProgress以外の処理が全てストップしているように見えるのですが… 読み込むswfやjpgのファイルサイズが小さい場合には気にならないのですが、 大きくなると止まっているのがよく分かる状態です…。 どなたかこの対処法などご存知ないでしょうか…?
730 :
Now_loading...774KB :2007/10/22(月) 16:25:01 ID:gP/TdxM1
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) マウスポインタの動きについて質問です。 root内あるいはMC内でオリジナルデザインのマウスポインタを動かす際に マウス(分解能は変えない)を20cmくらい動かしてもroot内あるいはMC内に 収めるにはどういう方法が考えられますでしょうか? 当方で試した仕組みは、オリジナルデザインのマウスポインタMCをnewMouseM として、このイベントを(すいませんAS全部書きます) onClipEvent (load) { Mouse.hide(); moveRate = 50; //比率を50%に } onClipEvent (mouseMove) { this._x = 0.01*_root._xmouse*moveRate; this._y = 0.01*_root._ymouse*moveRate; //moveRateが100の場合、動きが一致する updateAfterEvent(); } としました。これで一応は本物のマウスの半分の動きが実現できますが、本物 のマウスポインタがディスプレイ(15インチ,10024*768)の端に到達すると動か なくなります。 マウス自体の分解能は変えれば一番手早いのですが、同じPCを他の用途にも 使うのでマウスの設定はなるべく避けたいです。なお、マウスポインタ自体の座標 を変えようと _root._xmouse = _root._xmouse/10; などとしましたが駄目でした。 アドバイスを願います。
731 :
Now_loading...774KB :2007/10/22(月) 18:08:55 ID:vxixU9N4
Flash CS3Pro WinXPsp2 を使ってます。ActionScript3について質問します。 MovieClipを順番に並べて各MCにアクセスしたいんですが、 AS2でやってた方法が使えず困ってます。 var cnt:int; var mc:MovieClip; for (cnt=0; cnt<3; cnt++) { mc= new bt(); mc.name = "bt"+cnt; mc.y= cnt * 30; container.addChild(mc); } これでリンケージされたムービーbtを配置することは出来たのです。 しかし、各MCにアクセスすることが出来ません。 例えば2個目のmcをvisible=falseにしたりとか、mc.visible=false でも bt1.visible=falseでもダメでした。 AS2の頃はmc[cnt] = new bt();みたいにして、 オブジェクト名を付けられた気がするんですが、AS3ではどうすればいいのですか?
>>729 そもそも、フレームレートはどの位?
速すぎるのは駄目だから、1fpsでは試した?
733 :
730 :2007/10/22(月) 18:47:05 ID:qMJFNePx
(訂正) マウスの分解能は通常のマウスでは調整できないですね。 失礼しました。 代わりに コンパネ → マウス → マウスポインタ → ポインタの速度を選択する で調整できますが、さっき書いた通り、他の用途を考えるとこれは避けたいです。
>731 俺はAS2しかわかんないから違うことを言うかも知れないけど、例えば mc[i]=this.attachMovie("myMC","mc_"+i,i); としたとき、参照名である mc[i] と、インスタンス名である ["mc_"+i] は 別物だと言うことは理解できるよね? きみはどうも、「オブジェクト名」という言葉に、参照名とインスタンス名の 両方をごっちゃにして意味を当てているように思える。 >731のソースで、変数mcに3回、別の意味を与えているけれど ソレだと最後の1つしか、意味を成さなくないのかな?
>>731 cs3でもできるcontainer["bt1"].visible=false
>>731 735のでもいいしgetChildByName使ってもいいし配列に入れてもいいしいろいろ
やり方があるよ。個人的にはgetChildByNameを結構使う。
737 :
729 :2007/10/22(月) 20:00:25 ID:MLLh9Prc
>>732 試してみたのですが…
他にEnterFrameなりTweenなりのアニメーションが
動いている状態で外部読み込みをしたいので、結局1fpsにしてしまうと意味が無いというか…
1fpsの間にファイル読み込みが終わってしまって結局現象の確認もしづらいので。
ちなみに初めは30fpsでやっていました。
読み込むファイルの、描画的負荷が高い方が止まる率が高いように思います…。
サイズの大きいjpgであったり、それを配置してあるswfだったり。
でも、それほどサイズの大きくないjpgでも1瞬カクっとなる事もあり、、
loadMovieではこんな風になった記憶は無かったのですが…
>>737 10°単位なら力技で36フレームに分割するという手もある。
>>737 onLoadProgressで、ループ回してたりとか何か複雑な描画をさせてたりとかはないの?
onLoadProgressリスナーを使わなくても、描画が止まるの?
740 :
729 :2007/10/22(月) 21:28:41 ID:MLLh9Prc
>>738 回転させているMCは確認用に置いてあるだけで…回転しているMCはそれほど重要ではないんです、、申し訳ありません…
>>739 以下にソースを書きます。onLoadProgressにはtraceだけ入っていましたがコメントアウトしても変わりませんでした。
var mcLoader:MovieClipLoader = new MovieClipLoader();
var objListener:Object = new Object();
objListener.onLoadStart = function(target_mc:MovieClip){
target_mc._visible = false;
}
objListener.onLoadProgress = function(target_mc:MovieClip, nLoadedBytes:Number, nTotalBytes:Number){
//trace(Math.floor(nLoadedBytes/nTotalBytes*100));
}
objListener.onLoadInit = function(target_mc:MovieClip){
target_mc._visible = true;
}
mcLoader.addListener(objListener);
function loadingStart(){ mcLoader.loadClip("sample.jpg", MCLoader_target); }
で、外からloadingStart();を呼ぶと、onLoadInitの部分に来るまでストップしてしまう状態です。
テストで読み込んでいるsample.jpgは1MBちょっとありますが、それほどパフォーマンスに影響が出るサイズとも思えません、、。
というか737でも書いたのですが、処理が止まるタイミングがブラウザによって違うような挙動が見受けられました…。OSはMac OS Xで、
Safari→onLoadInitのtarget_mc._visible = true;のタイミングで1瞬止まる
Firefox(最新)→ロード開始〜target_mc._visible = true;の間止まっている
これはFlashというよりブラウザのパフォーマンス(かwebエンジン)がFlash Playerの挙動に影響してると考えた方が良いのでしょうか
>>734-736 ありがとう。
>>734 AS2ならattachMovieでなんとか出来るのは知ってるんだけど、
それをAS3に書き直そうとして混乱してる状態です。
>>735-736 まだAS3は全然馴染めてないので、教えてもらった方法で色々試してみます。
連想配列を列挙するにはどうすればいいのか。 this._hash = new Object(); _hashに色々登録 for(var key in this._hash) { } とやっても列挙されない。
var hash:Object = new Object(); hash.s1 = "ABC"; hash.s2 = "DEF"; hash.s3 = "GHI"; for(var key in hash) { trace(key + ":"+hash[key]); }
_hash[name] と参照したいんだよね。
>>744 列挙って言ってるじゃんw
trace(hash["s1"]);
あとcじゃないんだから_つけるのやめれ。
意味が分からん。 traceしてどうすんだよ。
なんでtraceに目がいっちゃうんだろうね、この子は
>>744 >>745 に補足すると、要素名を引用符を付けない形で
指定したい場合は、 _hash.name と記述する。
foo["bar"] と foo.bar は同じ意味。
name = "bar"; _hash[name] とやりてぇんだよ。 _hash.name はただのプロパティnameじゃねぇか。
>>749 そのとおり。じつはASに「連想配列」なんてものはないんだ。
オブジェクトのプロパティを代用しているに過ぎない。
だからそのルールに従ってくれ。
3.0ならfor each in使うかdictionaryクラス使えばいいよ
752 :
731 :2007/10/23(火) 11:51:22 ID:1xuCy3hW
たびたび、すまんけど教えてください。 for (cnt=0; cnt<5; cnt++) { var mc[cnt]:MovieClip = new MovieClip(); } という感じをAS3にするにはどうしたらいいの? mc0〜mc5を作りたいだけなのに…
>>752 いまいちわからんけど
var mc:Array = new Array()
for(cnt=0;cnt<5;cnt++){
mc[cnt] = new MovieClip();
addChild(mc[cnt]);
mc[cnt].name = "mc" + cnt;
}
trace(mc[0].name)
ってことかな?それとも
var _mc:MovieClip
for(cnt=0;cnt<5;cnt++){
_mc = new MovieClip()
_mc.name="mc"+cnt;
addChild(_mc);
}
trace(getChildByName("mc0").name);
ってことかな?
754 :
731 :2007/10/23(火) 13:28:46 ID:1xuCy3hW
>>753 ありがとう。
最初ので出来ました。
var mc:Array = new Array();
と
var mc:Array;
の違いがいまいち理解出来てない。
755 :
Now_loading...774KB :2007/10/23(火) 13:34:15 ID:8DpBRXr5
>>754 変数宣言しているだけか、変数宣言と同時に初期化しているだけの違い。
初期化でなくインスタンス作成だべ
//Etude.as package{ import mx.core.*; import mx.containers.*; public class Etude extends Application{ public function Etude(){ addToCreationQueue( new Panel()); }}} これ実行時にエラーになるんですが何ででしょうか?
>>757 エラーメッセージがでるならそれを書く。
出ないなら、自分が期待する状況とどう違うのかを詳しく書く。
>>758 エラーメッセージが二つでます
エラーが出るだけで一応意図した通りの画面にはなってます
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
at mx.core::UIComponent/getStyle()
at mx.core::Container/::isBorderNeeded()
at mx.core::Container/mx.core:Container::createBorder()
at mx.core::Container/styleChanged()
at mx.core::Application/styleChanged()
at mx.managers::SystemManager/
http://www.adobe.com/2006/flex/mx/internal::addingChild ()
at mx.managers::SystemManager/::initializeTopLevelWindow()
at mx.managers::SystemManager/::docFrameHandler()
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
at mx.core::UIComponent/getStyle()
at mx.core::Application/mx.core:Application::layoutChrome()
at mx.core::Container/mx.core:Container::updateDisplayList()
at mx.core::LayoutContainer/mx.core:LayoutContainer::updateDisplayList()
at mx.core::Application/mx.core:Application::updateDisplayList()
at mx.core::UIComponent/validateDisplayList()
at mx.core::Container/validateDisplayList()
at mx.managers::LayoutManager/::validateDisplayList()
at mx.managers::LayoutManager/::doPhasedInstantiation()
at Function/
http://adobe.com/AS3/2006/builtin::apply ()
ついでに言うとas3です
761 :
Now_loading...774KB :2007/10/23(火) 19:22:15 ID:VpHSj7ab
AS3.0 動的にライブラリから読み込みたいのですが、どうやるんですか? AS2.0ならこんな感じだったかと var tmpStr:String = "Class"+ event.target.name ; tmpObj = new [tmpStr]; おねがいします。
var hash = this._hash; for(var key in hash) { trace(key); } どういう理屈か知らんがローカル変数にコピーして回したらできたわ。
>>761 AS2.0でそんなことするの初めて見たw
3.0なら普通にnewすればいいんだけどなw
まあ、どうせつりだろw
ローカルのswfをdebugフォルダに入ってるSAFlashPlayer.exeで開くと、 「Flash 8 オーサリングツールはどこで実行されていますか」 っていうダイアログが延々出るんでうざったいです このダイアログってどうやってでないようにすればいいんでしょうか? うまく設定すると出ないようになるらしいんですがどうにもわかりません お願いします
>>766 そりゃ失礼しました。どうぞ、先生の回答をお願いします。
>>765 CS3だけど、そんなメッセージ出ないよw
GQiP6Itgから漂うオーラ
>>761 getDefinitionByNameかな。こんな感じ。
var str:String = "Hoge"
var c:Class = getDefinitionByName(str) as Class
addChild(new c())
>>759 エラーメッセージのままでしょ。実体化されてない、または初期化されていない
オブジェクトを参照しようとしたとか。
773 :
Now_loading...774KB :2007/10/24(水) 08:07:52 ID:64F7xZqC
イライラ棒のような、コースに触れたらゲームオーバーといった物を作っているのですが 右クリックを禁止にする方法ってありますか? 右クリックをしたら指定したフレームに飛ばすというような やり方があれば教えてください。ちなみにFLASH8を使用しております。
>>773 右クリックじゃなくて、右クリックによって可能になる特定の動作を
無効にしたいんじゃないのか?
AS2以前ならStage.showMenuでコンテキストメニューを制御できる。
あとは作り方次第。
うっかり右クリックしただけで特定のフレームに飛ばされたり警告出すような
クソ仕様はおすすめしない。
775 :
752 :2007/10/24(水) 15:29:30 ID:n2r5SaOW
またまた、お世話になります。
>>753 で教えてもらったスクリプトにイベントリスナーをつけたんだけども、
引数の渡し方が良くわかりません。
var mc:Array = new Array()
for(cnt=0;cnt<5;cnt++){
mc[cnt] = new MovieClip();
addChild(mc[cnt]);
mc[cnt].name = "mc" + cnt;
mc[cnt].addEventListener(MouseEvent.CLICK, clickHandler); //ここで[cnt]を渡したい
}
function clickHandler(event:MouseEvent):void {
trace("クリックしたのはmc"+cnt); //何番目のmcをクリックしたか知りたい
}
かなり初心者的な質問だと思いますがよろしくお願いします。
>774 いや、「イライラ棒」をやりたいと言っているんだから、 コンテクストメニューを出して、その間に(OSのフォーカスがムービーに当たっていないうちに) ショートカットされるのを防ぎたいと言っているんじゃないかな。 俺は、「イライラ棒スタート!」の時に、ムービーをユーザーにクリックさせる ことで、ムービーがフォーカスされていることを保証した上で、 フォーカスが外れたときに「ズルすんなバーヤ」と割り込めばいいと思う。
>775 AS3には、MCのイベントにonPress()はないんだろうか。 俺ならMCのイベントで管理する。 そう言えばAS3のイベントは、イベントリスナーをaddする方法に 統一してるんだよねぇ。さぞかし面倒くさかろう。
778 :
752 :2007/10/24(水) 16:25:33 ID:n2r5SaOW
>>777 残念ながらAS3では、onPress()は使えないです。
>>775 cntを渡さなくても、event.targetを参照すればおk
あ〜 ックスしてぇ、まじでックスしてぇ アスでックスしてぇ
>>781 おしい。
配置するのではなくビットマップにブレンドする。
783 :
Now_loading...774KB :2007/10/25(木) 02:34:47 ID:TzFr2+vP
外部に定義したクラス(たとえばTest.asに記述したclass Test)は 一度読み込むと変更不可? コンストラクタに描いたTraceが消しても出てきてるんですが。 わざと文法間違えてもエラー出ない。
ちなみにFlashProfessional8です。
君に罪悪感がある限り、いくら消しても消えないんだよ
質問させて下さい。 フラッシュ(使用ソフトはFLASH MX2004)で単純なゲームを作っているのですが、 敵の出現テーブルを作った後プレビューしたら、敵が一回画面に出たら何回も無限に出てきてしまいます。 これを消す方法は無いのでしょうか?
>786 マルチ禁止 いくつの掲示板に書き込んだか知らないけど、 全部取り下げて、1つだけにしな
>>783 ASOファイルを削除して実行するとか。
まあ、Test.asセーブしないで実行したとかが大だけどね。
789 :
Now_loading...774KB :2007/10/25(木) 06:16:17 ID:p03kdx1/
環境)OS:XPSP2 ソフト:Flash 8 もしかして、ライブラリに置いてある MC 等を使用→削除してもメモリは開放されない? デカイ画像を使用しててメモリ使用量がすごい事に… そのライブラリを持つ SWF を loadMovie 等で別の SWF に変えるとメモリが 開放されるんで上記のように思ったんだけど、教えてください。
790 :
783 :2007/10/25(木) 06:57:53 ID:TzFr2+vP
うーむ。 多分ファイルの更新日時が関係してそうです。 VMで実験してるんですが、ローカル上でやってる限りは問題ないようなので。
>>789 何を教えればいいのか俺には分からないんだが
変に重くなったりしない限りはそういうもんなので心配しないで大丈夫
テキストボックスに入力したものをボタンを押すと 他のテキストボックスに入力される っていうASってある? あれば教えていただきたい
MovieClipの_widthを設定すると表示されなくなってしまうんですが、 これは仕様ですか? LoadMovieの後です。 _xとか_yは設定してもちゃんと反映されて表示するんですが。
>>787 すいません。カキコしたのはこことflash質問スレのみです。
flash質問スレの質問取り下げてきます。
797 :
775 :2007/10/25(木) 14:18:39 ID:DzABpMvh
>>779 ありがとう。
ちょっと思ったのと挙動が違うのですが、(MC上のobjectが参照されてしまうので)なんとなく理解できました。
も少し試行錯誤してみます。
>>795 AS3の.widthなら普通に反映されましたよ。
798 :
Now_loading...774KB :2007/10/25(木) 17:25:51 ID:1wgJvXC7
mcの中にloadMovieしたswfに含まれるmcをアクセスする方法が分かりません。 まず、_rootに配置したmc「aaa」の中に配置したmc「bbb」にアクセスするには _root.aaa.bbb と記述すればオケ。 _rootに配置したmc「aaa」の中に読み込んだ外部swf「bbb.swf」の中にあるmc「ccc」にアクセスするにはターゲットパスはどう記述すればいいのでしょう。 通常通り _root.aaa.ccc と記述しても、上手く動いてくれません。 _nameをtraceしようとしてもundifinedと言われて困ってしまっています。 誰かヘルププリーズ。
>>798 >mcの中にloadMovieしたswfに含まれるmcをアクセスする方法が分かりません。
mcにアクセスする方法が分かりません。
>>798 MovieClipLoder.loadClipとonLoadInitでヘルプれ
矩形ツールで四角を描いて、それをムービークリップとリンケージを適応し、 それをダブルクリックして編集状態にすると、矩形が出てきますが、 編集でのAlpha値はいじれるんですが、ActionScript上からいじる方法が見つかりません。 this._alphaだと上に置いたムービークリップも消えてしまうので、 シェイプ(?)のみにAlpha値を適応したいんですが、何か方法はあるんでしょうか?
>801 アルファ弄りたい部分だけMCにする
質問です。 actionscript内部で、動的に wmode を設定することは可能なのでしょうか? "transparent" と "設定無し" を、必要に応じて切り替えたいのです。 どなたかご教授下さいませ。
>>803 後ろに目隠し用の長方形を置いといて出したり消したりするんじゃダメなの?
>>804 アドバイス有難うございます。
今回は、Firefoxでコンテキストメニューを利用するタイミングで"設定無し"にして、
swfの上に画像を重ねて表示するタイミングで"transparent"にしたいのです。
そもそも、WindowsのFirefoxでwmode="transparent"な状態で、
コンテキストメニューを利用することが出来れば万事解決なのですが・・
>>798 ローディング完了する前にtraceしてるから出ないのでは?
↓みたくクリックで表示すりゃでるんじゃないかな。
onMouseUp = function(){
trace("ローディングしたMCのプロパティ");
}
807 :
Now_loading...774KB :2007/10/26(金) 12:14:16 ID:/rQqTkUm
LoadVarsを継承したクラスを作ったんですが、 var setting:Setting = new Setting(); とやってもコンストラクタが呼ばれません。 なぜ? class Setting extends LoadVars { function Setting() { trace("!"); } }
>>807 セーブしてないとか、パスが通ってないとかだろ。
普通に出るよ。
810 :
Now_loading...774KB :2007/10/26(金) 16:40:10 ID:QdzB5lke
初歩的な質問かもしれませんがAS3.0でわからないことがあります。 var MCArray:Array = new Array(); var MC:MCClass; function A { var i:Number = 0; for ( i ; i< 10 ; i++ ){ MC = new MCClass(); addChild( MC ); MCArray.push( MC ); } } function B { var i:Number = 0; for ( i ; i< 4 ; i++ ){ removeChild ( this[MCArray[i]] ); } } こんな感じで、10個MCを作り、あとで配列に登録されているMCを消そうと思ったのですが、 「main にプロパティ [object MCClass] が見つからず、デフォルト値もありません。」 というエラーがでます。 配列で、MCの管理のしかたをおしえてください!!
removeChild (MCArray[i] ); 試してないけどこうか?
812 :
Now_loading...774KB :2007/10/26(金) 17:08:22 ID:QdzB5lke
>811 成功したけど、こんなエラーが出る 「指定した DisplayObject は呼び出し元の子でなければなりません。」 。。。 違うところを間違えてるのかな
813 :
Now_loading...774KB :2007/10/26(金) 17:13:47 ID:QdzB5lke
あ、すまん、 全然違うところ間違えてた すまんかった。
vistaでtrace関数が動作してる人っていますか? debugplayerインストールして環境変数HOMEDRIVE,HOMEPATHをきちんと設定して、mm.cfgも置いてるんですが なんにもログを吐き出してくれません… 困ったー
してるよ。お前の設定がウンコなだけだろ。
どういう名前の技術だったかわすれましたが var _this = this; myVars.onLoad = function (bSuccess) { if ( bSuccess ) { _this.ary = new Array(); _this.ary['test'] = "hoge"; _this.test = "hoge"; } } こんな感じの処理ってできないんすかね? 関数は呼べてるんだけど、変数への値の格納が出来なくてundefinedになる。
>>816 何のためにbSuccessをif文で判定してるんだよw
818 :
Now_loading...774KB :2007/10/27(土) 11:48:30 ID:P8dJTKxJ
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) MC内のテキストフィールドの背景色で質問です。 デジタル時計内の数字が指定した数字になったとき、時報として数字(青色)の背景が オレンジ色に変わるようにしたいのですが変わりません。 例えば、12時になったとき _root.setTimeF = true; として onClipEvent(enterFrame) で if (_root.setTimeF == true) { trace(" Path= "+_root.clockM.ji_ins); //パス確認用 _root.clockM.ji_ins.backgroundColor = 0xFF6600; //root内のclockMのji_insの背景をオレンジに } と書いてたところ、12時にはif内のtraceは実行されますが、背景は白のままです。 考えられる原因は何でしょうか? パスは正しくつながっているようですが。。。。
background = true;
プルダウンメニューやチェックボックスをASで生成できる?
823 :
821 :2007/10/27(土) 19:18:17 ID:6rLIjjih
ごめん、やり方が分からないんだ…
>>823 そうかい。日記は自分のBlogに書けよ。
質問です。
flash8で、
ここのサイトのように
(
ttp://www2.nissan.co.jp/OTTI/H92/0610/STYLE/main1.html )
スクロールして画面が切り替わるようなものを作りたいです。
次がフェードインしながら切り替わって、
その画面のムービークリップ(又は外部swf)が再生される、といった流れです。
戻った時もムービークリップ(又は外部swf)が最初から再生されるようにしたいのですが、
このようなサンプルがある情報サイトなど、どなたかご存知でしょうか。
すみません、あまりAction Scriptに詳しくないので
ご助力の程よろしくお願いいたします。
>821 まず、質問スレッドで「出来る?」って聞き方はやめろ。 たとええ自明であっても、「できるかどうか」の質問と見なされるから >822や>824みたいな意地悪をされても、きみが悪いことになる。 >824 でも、いくらそうだとしても、質問スレで「できる?」ってのは 「やり方教えてくれ」の意味だってことくらいいちいち言わなくても分かれよ。 諭した上で応えてやれ。わかんなかったらそれこそこそ自分のブログで毒でも吐いてろ。 助けを求めて伸ばした手に小便かけて楽しいか? さて、>821への解答。UIObjectクラスを使う。 あらかじめ、プルダウンメニュー(コンボボックス)やチェックボックスを ライブラリに入れておくこと。 プルダウンメニュー(コンボボックス)…… createClassObject(mx.controls.ComboBox,"インスタンス名",深度) チェックボックス…… createClassObject(mx.controls.CheckBox,"インスタンス名",深度) 深度は数字で指定すること。 作成したら、インスタンス名で、任意のメソッドなりプロパティなり定義すれ。 (各々のやり方は、ヘルプを見た方が早いからそっち見れ)
うぜえな
>>825 適当にサンプル作ったから、あとは適当に理解してくれ
var page = 0;
leftButton.onRelease = function() {
page--;
slideAction();
}
rightButton.onRelease = function() {
page++;
slideAction();
}
function slideAction() {
var targetX = -page * 720;
var x = contentMC._x;
var dx = ( targetX > x ) ? 20 : -20;
this.onEnterFrame = function() {
x += dx;
if ( Math.abs( x - targetX ) < 20 ) {
x = targetX;
delete this.onEnterFrame;
}
contentMC._x = x;
}
}
826は煽り
>>826 確かに君の言っている事は正論だが、ここは2ちゃんなので821が全部悪い。以上。
>
>>826 >確かに君の言っている事は正論だが、ここは2ちゃんなので821が全部悪い。以上。
キモ過ぎ
832 :
821 :2007/10/28(日) 03:31:51 ID:c6SSyPco
いやーーーーー、私のために喧嘩しないでっ!!><
>>826 回答だけ提示しろよw
おまいが一番読めてないw
ガンバ懐かしい
日経予想スレを思い出す絵だな
ライブチャットのようなシステムを作りたいのですが、 最短で学ぶための覚えるべきことをいくつか挙げてください。 お願いします。
839 :
837 :2007/10/28(日) 12:09:41 ID:lUPeAHBd
>>838 現在、Fles2SDK + ActionScript + それようの鯖
までわかったのですが、レールはそれてないでしょうか?
>>839 まずはFlash Media Serverを買え
あとは知らないから自分でがんばれ
841 :
837 :2007/10/28(日) 14:12:12 ID:lUPeAHBd
>>840 それに代わるフリーの物があるようです。
しかし、Webカメラ接続あたりのソースがまったく見つからなかったりと
予定していた一週間では作れそうにないので、おとなしくシステム買い取ります。
もし作れる方がおられましたら、金額提示してください。
ありがとうございました。
>>841 亀レスだけど
・RED5 Server
・続FlashActionScriptバイブル
あたりでも調べてみれ。
つか、調べてんなら質問する間にそういうのも書き込めよ なに、回りくどい質問の仕方しやがって
>>826 すいません。Flashの使い方を1から10まで教えてください。
もちろん無料で。
とか言われたらムカつくだろ。
var topMenu = new ContextMenu(); topMenu.hideBuiltInItems(); topMenu.builtInItems.quality = true; topMenu.customItems.push(new ContextMenuItem("Noise", this.onSelect)); topMenu.customItems.push(new ContextMenuItem("PerlinNoise", this.onSelect)); this.menu = topMenu; ビルトインメニューの変更はできるがカスタムメニューの表示がされない。 もうこれバグなんじゃねーの
>>845 どうせ、function onSelect(){}作ってねーとかだろw
FLASHでバナーを作成するのですが、そのリンクのジャンプ先が定期的に変わります。 getURLでFLASH内でスクリプトとして書いてしまうと、リンク先が変更するたびに.flaデータを修正することになりますよね。 これを、クライアント側で不定期に修正可能なように、外部テキスト(xml)として用意したいのです。 リンク先を外部読み込みにするようなスクリプトを書きたいのですが、よくわかりません。。 方法もしくは参考サイト等をご存知の方がいらっしゃいましたら、教えて頂けないでしょうか。 初歩的な質問で申し訳ありませんが、どうぞよろしくお願いいたします
848 :
789 :2007/10/29(月) 09:58:17 ID:otg4St3W
>>792 返事が遅くなって申し訳ない
// ここからフレーム スクリプト
var ids:Array = new Array();
ids.push("MC00"); 〜 ids.push("MC99");
var mc:MovieClip = null; var cnt:Number = 0;
var listener:Object = new Object();
listener.onKeyUp = function(){
if (Key.getCode() == 90){
if (mc != null){
mc.removeMovieClip();
mc = null;
}
mc = _root.attachMovie(ids[cnt], ids[cnt].toLowerCase(), _root.getNextHighestDepth());
cnt++;
if (cnt == 100){ cnt = 0; }
}
}
Key.addListener(listener);
// ここまで
画像等をメモリに展開してるから表示するとメモリ使用量が増えるのは分かるけど、
MCを削除したのに前の状態に戻らないのが何故なのかがわからない
>>847 ヘルプを検索すればサンプルコードあるし、ググればいくらでも参考サイト出てくる。
>>848 メモリ解放はGCが行います。いつ行われるかはわかりません。
850 :
789 :2007/10/29(月) 10:39:59 ID:otg4St3W
851 :
789 :2007/10/29(月) 11:17:01 ID:otg4St3W
ちょっと質問がずれたので修正
MCを attachMovie して作成後 removeMovieClip でMCを削除後→GCが起動した(と仮定)場合、
増えたメモリ使用量分減るのか?ということが知りたい。
自分でサンプル(
>>848 )作って試した場合減らなかったので。
>>850 どっかに参照残したままにしてんじゃね?
854 :
789 :2007/10/29(月) 17:20:20 ID:otg4St3W
>>853 > どっかに参照残したままにしてんじゃね?
うーん…スクリプトは
>>848 だけなんですけどね
もう今日はこれの検証をずっとやって疲れた…
検証して思ったけど、画像分のメモリ使用量だけ解放されないっぽい
Flash がそういう作りになってるとしか思えない
それならそれで構わないけど、そうであるというソースが欲しいw
>>854 BitmapDataなら明示的にdispose()しないと開放されないけど、それはちがう?
質問です。 FLASHの操作で、ライブラリからシンボルをドラッグ&ドロップして ステージに配置するようなものを、 まんまFLASHで作りたいのですが、どうにもこうにもできません。 ステージ上でない途中の所で指を離してしまうと キャンセルと見なして元の場所に戻るようにもしたいです。 ただドラッグ&ドロップで移動させるのではなく、複製するというか、 アイコンを操作するあの感じにしたいのです。 わかりにくい質問ですみません。 何か解法がありましたら教えてください。 MAC]でソフトはFLASH8です。
質問です。 環境:WinXP CS3 やりたいことというかアドバイスしていただきたい事 「プレビューではしっかりと読み込まれて表示されるのにパブリッシュ後のファイルは、読み込まれる物と読み込まれないものが発生します。 回避方法等原因のアドバイスをいただけますでしょうか? やっていることは メインで複数の外部SWFをバイトで読み込み、配列に格納 MovieClipを継承した自作クラスを8個生成してメインに配置。 自作クラスのコンストラクタは、メインで読み込んだ外部SWFの配列からSWFをLoaderでコピーしてクラス内の配列(SWFとして)に格納 読み込み終了後、配列からランダムでSWFを選び、再生 といった感じのプロセスです。 プレビューですと、全てのクラスで正常に読み込みが終わり再生されるのですが、パブリッシュですと再生されない物ができてしまします(全て読み込まれるときも在りますが、ほとんどの場合1,2つ再生されずに止まっています) 途中までは読み込まれているようですが、それ以降エラー等をはかずに止まっている(私が見つけられていないだけかもしれませんが) これは、クラスを同時に作成して、そのまま読み込みをやっているため発生してしまう問題なのでしょうか? やはり一つづつクラス作成→読み込み終了→次のクラス作成 といった手順を踏む方がいいのでしょうか? アドバイスをよろしくお願いいたします。
そもそもドメインは同じ?
860 :
858 :2007/10/30(火) 00:57:06 ID:C89C5gsB
とりあえず ローカル内で動かしているので多分大丈夫だと思います。
>>858 読み込み終了のイベントは何使ってる?
読み込み完了後、1フレーム目の実行(初期化)が完了しないと
命令を受け付けないよ。
862 :
858 :2007/10/30(火) 01:12:14 ID:C89C5gsB
>861 contentLoaderInfoのEvent.COMPLETEを使ってます。 メインの配列全てをcopyして使いたかったので、 function completeHandler(evt:Event):void { クラス内のSWFとして格納する配列[b]=loader.contentLoaderInfo.content; if(クラス内のSWFとして格納する配列.length<メインのバイトデータが入った配列.length){ try{ i++; loader.loadBytes(メインのバイトデータが入った配列[i]); }catch(e:Error){ trace("Error"); }else{ trace("ALL Load"); SWF再生処理 } } といった感じです。
863 :
858 :2007/10/30(火) 01:14:09 ID:C89C5gsB
訂正:クラス内のSWFとして格納する配列[b]=loader.contentLoaderInfo.content; →クラス内のSWFとして格納する配列[i]=loader.contentLoaderInfo.content; ですorz
>>862 各swfを読み込んだかどうかのflg=0の配列を用意。
それぞれのCOMPLETEで該当flgを1に。
メインではtimer使ってその配列をチェックし、
全部1なら次処理に移行するとか、ボタン有効するとかに。
読み込んだswfのサウンドについて質問があります。 以下のように、外部swfを読み込み、用が終わりremoveした後も 読み込んだswfのサウンドが流れてしまいます。以下ソース ************************************************************************* // ローダーオブジェクトを作成し配置 var loader_obj : Loader = new Loader(); this.addChild (loader_obj); // ローダーインフォを取得 var info : LoaderInfo = loader_obj.contentLoaderInfo; //ボタンクリックで削除 function deleteObj(){ info.removeEventListener(Event.OPEN,LoaderInfoOpenFunc); info.removeEventListener(ProgressEvent.PROGRESS,LoaderInfoProgressFunc); info.removeEventListener(Event.INIT,LoaderInfoInitFunc); info.removeEventListener(Event.COMPLETE,LoaderInfoCompleteFunc); info.removeEventListener(IOErrorEvent.IO_ERROR,LoaderInfoIOErrorFunc); this.removeChild(loader_obj); info = null; loader_obj = null; } ************************************************************************* 対策方法をご存知の方、ご教示頂けないでしょうか? つたない文で、申し訳ありませんが、よろしくお願いいたします。
AS2しか理解できない厨房でも読めるOOP解説した本ってないですか? JAVAで解説されても分からん。
1.38777878078145e-16って何?
>>868 0.000000000000000138777878078145のこと。
ここで聞くな。
var request:URLRequest = new URLRequest("introMovie.swf"); var loader:Loader = new Loader(); (中略) loader.load(request); addChild(loader); という感じで外部SWFを読み込んで配置したいのですが、0,0の位置じゃなく、上から200pxのセンターの位置に配置したい場合はどのように記述すればいいでしょうか? よろしくお願いいたします。
loader.y=200;
>>865 Loader.unload()でヘルプを検索。先に子のsoundを停止する。
>>872 ありがとうございました。
解決いたしました。
>>867 これってOOPを一から理解するには良書じゃないって言われたんだけどどう?
rascut便利すぎワロス 普段使わないRuby入れたりと導入が面倒くさかったけど
877 :
Now_loading...774KB :2007/10/31(水) 20:13:12 ID:qoeOHWh/
一定時間たつと消えてしまうのをなんとかしたいのです。 ある空のMCの1フレーム目に loadMovie("aaa.swf",this); と外部swfを読み込んで表示させています。 しかし、このswfが5分くらい?たつと消えてしまいます。 この外部swfは 単なるアニメーションで最終フレームには stopを書いているのですが… もうひとつloadMovieで読み込んでいる所は問題なく ずっと表示されるのですが、なぜ消えるのかわかりません。 初心者の質問で見当違いでしたら申し訳ないですが どなたかお答えいただければ幸いです。
質問があります、
http://www.nutrigloss.jp/special/ の画面右側で動いているblogパーツをクリックすると、
画面外に飛び出すような動きをするのですが、
これってどう作っているんでしょうか?
javascriptでウインドウを作って、
そこで新規swfを再生って感じでしょうか?
作り方を解説しているようなサイトが有れば、
ぜひ教えて下さい先輩方・・・
879 :
level0 :2007/10/31(水) 21:41:53 ID:UKE8dAE5
先生方、質問です。 出力エラーで、 **エラー** シンボル = Symbol 14, レイヤー = actions, フレーム = 5 :行 16:')' または ',' が必要です。 duplicateMovieClip('move', 'move' add mc, mc); **エラー** シンボル = Symbol 14, レイヤー = actions, フレーム = 5 :行 17:')' または ',' が必要です。 setPropert("move" add mc, _x, 230+Number(x*4)); ActionScript エラー数 :2 報告済みエラー :2 と、出ます。 この場所に行きどのように修正すればよろしいでしょうか。 すみませんが、よろしくお願いします。
>>879 >**エラー** シンボル = Symbol 14, レイヤー = actions, フレーム = 5 :行 16:')' または ',' が必要です。
>duplicateMovieClip('move', 'move' add mc, mc);
>**エラー** シンボル = Symbol 14, レイヤー = actions, フレーム = 5 :行 17:')' または ',' が必要です。
>setPropert("move" add mc, _x, 230+Number(x*4));
Flash 5以降のActionScriptの文法を学ばれた方がよいように思われます。
Flash Player 7以前でパブリッシュすれば、エラーは生じません。
Flash 8オンラインヘルプ[ActionScript 2.0リファレンスガイド] >
[使用されなくなったActionScript] >
[使用されなくなった演算子の一覧]より引用:
add
Flash Player5以降では、使用しないでください。
Flash Player 5以降では、コンテンツの作成時に加算(+)演算子を使用することをお勧めします。
この演算子は Flash Player 8以降ではサポートされていません。
あと、setPropertyな
質問です。 操作対象の絵をカーソルキーの上下左右入力ごとに変えるにはどうすればいいでしょうか? どうか教えて下さいませ。
882 :
Now_loading...774KB :2007/10/31(水) 23:55:20 ID:haYjhWhN
883 :
Now_loading...774KB :2007/11/01(木) 00:00:37 ID:8H07fvkb
私も質問で悪いのですが、 現在AS3.0を勉強中なんですが、どうしてもテキストフィールドにフォーカスをスクリプトから当てる事ができません。 具体的には ドキュメントクラス→テキストクラス→テキストフィールド ↑これ テキストクラスに mytext_field.setFocus(); と書いたら [1061: 未定義である可能性のあるメソッド setFocus を、静的型 flash.text:TextField の参照を使用して呼び出しました。] ってな感じのエラー MovieClip( mytext_field ).setFocus(); って書いたら 強制変換に失敗。。。 setFocus("mytext_field"); って書いたら [1180: 未定義である可能性が高いメソッド setFocus の呼び出しです。] どうしたらいいんでしょうか?
884 :
level0 :2007/11/01(木) 00:03:57 ID:rnZVY++G
>>880 先生
ありがとうございます。
勉強になります。
885 :
Now_loading...774KB :2007/11/01(木) 00:05:08 ID:8H07fvkb
質問だけでは失礼なので、ちょっと消化します。
>>881 一番、簡単な方法は
操作対象の絵のムービークリップを4つのフレームに分ける
一つずつフレームに名前をつけてあげて(例えば、上下右左)
その対象の絵のムービークリップのフレームアクションに
それぞれの分岐(スイッチ使ったららくじゃね)を書いてあげる
これでOKじゃね?
AS3.0のコンポーネントのデータグリッドで選択したもの値を取得するにはどうすればいいでしょうか。
>>883 stage.focus = mytext_field;
888 :
Now_loading...774KB :2007/11/01(木) 00:07:52 ID:8H07fvkb
>>885 ちょっとわかりにくかったので
↓(ここに操作系のアクションスクリプト)
ルート → 対象の絵
↑(このムービークリップをフレームで分けてあげる)
889 :
Now_loading...774KB :2007/11/01(木) 00:08:42 ID:8H07fvkb
>>887 おお!!
ありがとうございます!!!
こんなので5時間も悩んでいたのか。。。。
890 :
Now_loading...774KB :2007/11/01(木) 00:17:08 ID:8H07fvkb
>>886 こんな感じじゃないですか?
myDataGrid.addEventListener( DataGridEvent.ITEM_FOCUS_IN , ファンクション);
891 :
Now_loading...774KB :2007/11/01(木) 00:27:27 ID:8H07fvkb
あ、まちがえたっぽい なんかお世話になったので、どぞ import fl.controls.List; import fl.data.DataProvider; import fl.events.DataGridEvent; var dp:DataProvider = new DataProvider(); dp.addItem({label:"Item 1"}); dp.addItem({label:"Item 2"}); dp.addItem({label:"Item 3"}); myDataGrid.dataProvider = dp; myDataGrid.addEventListener( Event.CHANGE , ファンクション); function ファンクション(event:Event){ trace( event.target.selectedItem.label ) }
892 :
Now_loading...774KB :2007/11/01(木) 00:34:19 ID:8H07fvkb
>>878 どれかわからないので、再現できなかったです。
IEですか?
893 :
Now_loading...774KB :2007/11/01(木) 00:38:43 ID:8H07fvkb
>>877 空のMCは親の最後のフレームまでいますか?
> 単なるアニメーションで最終フレームには
> stopを書いているのですが…
読み込まれるSWFでは基本的にthisとかrootとかをつけてあげましょう
877さんの場合だと
this.stop();
が一番良い書き方
894 :
Now_loading...774KB :2007/11/01(木) 11:07:37 ID:uRVEbumC
ニコニコ動画のようなタイプのアプリケーションを考えています。 それで、ニコニコはXMLでコメントと再生位置をセットで1つのノードに保持するというデータ構造を持っていますが、 この方式では、いくらがんばっても、ニコニコのように高速な処理が望めません。 はじめ、毎回ノードを取り出して、ifで該当時間のデータを、毎ミリ秒取り出すようにしてたんですが あまりにも遅いので、予めノードのデータをArrayに取り出して、連想配列のキーに該当時間を入れる事で高速化を図ったのですが やっぱり遅いです。 何かいい方法はありませんでしょうか? 他の処理をXML形式にあわせてしまったので、今のデータ構造そのものは変えたくありません。 開発環境は、Flex Builder2(AS3)です。 よろしくお願いします。
>>894 何万行のデータ解析しようとしてるか分からないけど、XML以外のところに問題があるとおもわれ
>>878 こういうのはJavascript使わないと無理だと思う
Wndowsを作るというより、CSSで全画面になるようなDivなり追加するようにして、その中でSWF再生とか
閉じるときは同じようにJavascriptで消す
>>894 うまくいかないソース提示しろ。話はそれからだ。
899 :
Now_loading...774KB :2007/11/02(金) 01:38:55 ID:qoH1//+J
dataXML=new XML(); dataXML.ignoreWhite=true; dataXML.load("data.xml"); dataXML.onLoad=function(){ init(); } function init(){ //itemの総数 itemNum=dataXML.childNodes.length; for(i=0;i<itemNum;i++){ //item内のノードの総数 childNum=dataXML.childNodes[i].childNodes.length; for(c=0;c<childNum;c++){ //name、urlの値を取得 obj[i+c*childNum]=dataXML.childNodes[i].childNodes[c].firstChild } } } trace(obj) で、関数init外でtraceするとobjの中身が空になるんですがなぜでしょう? objを受け取るためにはどうしたらいいんでしょう?
900 :
899 :2007/11/02(金) 01:42:26 ID:qoH1//+J
修正します。 >関数の外でobjを受け取るためにはどうしたらいいんでしょう? dataXML=new XML(); dataXML.ignoreWhite=true; dataXML.load("data.xml"); dataXML.onLoad=function(){ init(); } obj=new Array; function init(){ //itemの総数 itemNum=dataXML.childNodes.length; for(i=0;i<itemNum;i++){ //item内のノードの総数 childNum=dataXML.childNodes[i].childNodes.length; for(c=0;c<childNum;c++){ //name、urlの値を取得 obj[i+c*childNum]=dataXML.childNodes[i].childNodes[c].firstChild } } trace("関数内:"obj) } trace("関数外:"obj)
>>894 毎回時間を比較するんじゃなくて
コメントが出るであろうタイミングに
setTimeoutを発動させればいんでない?
>>899 「関数外」の方が先に実行されるんだし空っぽで当然。
obj使う処理はonLoadもしくはinit()側から呼び出しが発生するようにする。
質問させてください 処理おちを回避するためタイムラインに配置されたムービーをあらかじめロードしておきたいのですか、ナウローディングのスクリプトでよいのでしょうか?またナウローディングのスクリプトは読み込むムービーの指定をどこでおこなっているのでしょうか?
ナウローディングでいいんだお 最初からタイムラインに配置してあれば本体に含まれるからムービーの指定はいらない
904さんありがとうございます。 重ねて質問させていただくとナウローディングのサンプルを最初のフレームにおいても機能しない場合、何が間違っていると考えられるのでしょうか? ターゲット指定が必要ないならおくだけで機能すると考えたのですが、早計でしょうか?
>>905 そのスクリプトを拾ってきたサイトに聞いてください。
907 :
Now_loading...774KB :2007/11/02(金) 18:01:50 ID:UeN3JUw0
質問です。 XML.sendAndLoad()でXMLをPHPに投げようと思うのですがPHPでの受け取り方がわかりません。 LoadVars.sendAndLoad()はLoadVars.○○の変数名で$_POST["○○"]で受け取れるのはわかるのですが XMLの場合は何になるのでしょうか?
>>907 XMLにsendAndLoad()っていうメソッドあるんだ。どこから持ってきたの?
>>907 file_get_contents('php://input')とかでROWデータ取得できるんじゃなかったかな?
そういう質問はPHPの方でしてくれ。
910 :
883 :2007/11/02(金) 18:16:19 ID:nt3O37sv
>>887 で解決できなかったです。
だれか助けて〜
×ROW → RAW
>>910 クリックするなり、Timerイベントでアクションしてみそ。
AS3ならFocusManager あたりも見てみると良いかもね。
913 :
Now_loading...774KB :2007/11/02(金) 18:31:39 ID:UeN3JUw0
907です。 PHP中心で調べたところ $_GLOBAL["HTTP_RAW_POST_DATA"] か file_get_contents("php://input"); でいけるようです。 ありがとうございました。
Flex2のAS3について質問させていただきたいのですが、 ある領域に対してテキストを領域を超えないように幅を縮小したいと考えています。 今手元にちょっとソースが無いのですが テキストの幅を取得するメソッドと領域の幅を出して、その比率から scaleXとscaleYを設定したのですが、うまくいきませんでした。 (scaleX=scaleYだとうまくいったように見えるときもあるけど、 scaleY=1で、scaleXを可変にしたい。) 文字列を幅だけ縮小といったことは不可能でしょうか?
>914 システムフォントの表示はFlashのグラフィックエンジンの外にあるので 回転すると表示されないしスケールもガクガク。 埋め込みフォントならうまくいくものが多いけど、自分の記憶ではスケールのタテヨコは 連動するソースになってた気がするのでダメかも。 まあ、システムフォントしか使えませんというのであれば、 いったんBitmapDataに書き出してしまえばやりたい放題。 でも忠告しておくと、縦長の文字はかなり違和感があるしキタナイので 素直にレイアウトを考え直すべき。
質問させてください 1024 768で作ったフラッシュを起動時に縮小表示させて表示させたいのがどのようなスクリプトを用いればいいのでしょうか?
質問です。 var labelArray:Array; //複数回呼び出される function addLabel(){ var label:Label = new Label(); labelArray.push(label); } function delLabel(){ for earch(var label in labelArray){ delete label;//ここでエラー } } このようにどんどん追加されていくコントロールを削除したいのですが 動的に作られたものしか削除出来ないとエラーが出ます。 このような処理を行うには、どうすればいいのでしょうか? Flex2(AS3)です。よろしくお願いします。
>>915 ありがとうございます。
このぐらい簡単にできるもんかとおもいきや案外ややこしいんですね
920 :
Now_loading...774KB :2007/11/03(土) 22:33:38 ID:IFaPQ6Yl
フォーカスが当てれなくて困っています。 全体の動作はには、マウスクリックした場所にテキストフィールドを生成するっていう ごく単純なActionScript、テキストフィールドは生成するんですが、フォーカスがあたりません。 たぶん、簡単な間違いをしてると思うのですが。。。 package { public class TextChildren extends MovieClip { var mytext_field:TextField; function addWord( thisM ){ mytext_field = new TextField(); mytext_field.x = parseFloat( thisM.x ); mytext_field.y = parseFloat( thisM.y ); addChild(mytext_field); MovieClip(root).setFocus = mytext_field;//フォーカスを与える } } } エラーメッセージ---------- TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 よろしくお願いします。
921 :
Now_loading...774KB :2007/11/04(日) 05:36:32 ID:SrCGAWzA
ラベルコントロールについて質問です。 var label:Label = new Label(); label.horizontalAlign="Center"; このような感じで中央に配置する処理を行いたいのですが、該当のプロパティーがありません。 どのようにすれば、いいのでしょうか? Flex2です。
922 :
921 :2007/11/04(日) 08:41:08 ID:SrCGAWzA
追記です。 label.setStyle("horizontalCenter", "0"); のようにしてもダメでした。 <mx:Label label="test" hosirontalCenter="0" /> だと、正常に真ん中に来るのに・・・。
あ
>922 textAlign="center"じゃないの? 意図しているものと違うかもしれんけど。 hirizontalCenterは親がコンテナのときしか使えないよ。
>920 setFocusって関数じゃないの? それにTextFieldってフォーカス当たるの? mytext_field.setFocus()はないので Flexの場合UITextFieldを使う。 Flash8はよく知らんけど stage.focus = mytext_fieldかも。
ActionScript3.0での質問です。
http://www.saturn.dti.ne.jp/~npaka/flash/as30/VideoEx/index.html にあるflv再生のデモで、
stream.play("robo.flv");
の後にタイマーでNetStream.timeで再生時間を取得しようと思ったのですが
(1秒ごとにtrace(stream.time);という記述で再生時間)、なぜか
「TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」
というエラーメッセージが出て再生時間が取得できません。
うまく再生時間を取得する方法はないでしょうか?
927 :
926 :2007/11/04(日) 18:34:20 ID:7Aaj0Ea5
自己解決しました。 2回目のvar streamのvarをとったら普通に取得できました。
ヴぁーか
>>929 イベントリスナーでON_MOUSEじゃね?
>>930 適当なこと言うなw
Stage.scaleMode = "noScale";
Stage.align = "TL";
とかにした上で、随時MovieClipの位置を調整してやればオk。
例えば、左下のWhat's Newだったらこんな感じ。
function onResize():Void {
_y = Stage._height - 150;
}
onResize();
Stage.addListener(this);
>>931 できました!
これをHTMLにのっける場合どのようにHTML書けばできますか?
いつもLayout Tableサイズ考えてのっけてたもんですから。。。
その最終目標のHTMLのソースみればいいじゃない
円(親)が動けば、それに円(子)が追随してきて、親が止まった位置に止まる こんなアニメーションを付けたいのですが、円の数が多いと、制御が大変なので、 actionscript等で、自動的に、円(親)に円(子)が追随してくるようにはできませんか?
すみません。質問場所を間違えました。。。初心者スレで聞いてみます。
>>934 MCのインスタンス名を、mc0, mc1, ... などとして、for文で
for(i=0; i<10 ; i++){
this["mc"+i]._x +=10; //X方向への移動の場合
}
詳細は本を読んでクレイ
HTMLでいうところのラジオボタンとかセレクトボックスなんかを さくっと作れるAS3のクラスを配布してるありがたいサイトなんて ないでしょうかねえ?
mxmlがあんだろーがこのボケナス
>>937 オレはFlexじゃなくてmxmlc(フリーのコンパイラ)でFlash作ってるから
Flexだと使えるラジオボタンとかチェックボックスが使えなくて困ったんで全部自作したよ
>934 親が動いたイベントに対するイベントハンドラを作って、 適当にEasingを効かせたMoveエフェクトを 子にかけてやればいい。 目標座標を親の座標にするだけ。 Flex2だけどね。 前に、これでマウスカーソルを追いかけてくる イヤなバナーを作って遊んだことがある。 コード部分は20行ぐらい?
ActionScriptはFlex Builderでガシガシ書いているんだけど、 Flash CS3でリンケージで子インスタンスを含むMovieClipを使う時に問題。 swf内には取り込まれたasに追加記述されているのでCS3上ではうまくいくのだが builder内では、MovieClipに含まれる子インスタンスを参照すると(例えばTextField) 「定義されていない可能性のある〜」とエラー表示されてしまう。 何かうまく解決できる方法はないだろうか。 strictを外すとか自動ビルドを外せば回避できるんだが、 根本的なエラーもチェックしてくれなくなるから意味なくなっちゃう。
同士が居て良かったw 使用するシンボルとか小分けにすると再編集が面倒だからこういう方式取ってるけど このエラーを解決できないと、あんまりやる意味ないんだよなー。
>>938 >>939 ありがとうございます。
私も無料のFlex2SDKでやってます。
結局自作するしかないのか、、、
>>938 >>939 自己レス(最初に質問した937です)。
自作しかないのか、、、と思ったら、mxmlって言うの?
XMLで書くやつでできました!
知らなかった〜!!!
mxmlも勉強してみます。
ありがとう!!!!!
>>941 swfはひとつのコンポーネントのようにしてて扱うわけだから、
getter/setterのアクセサメソッドを準備するのが王道じゃないかな。使う側じゃなくて、作る側の問題。
他の人に使ってもらうとしたら、そのtextfield名なんてしったこっちゃないだろうからね。
コーディングルールとかの問題じゃねえよ。 Flashがリンケージ時において自動生成するコードの問題だ。 手動で先にclass作っておいてそこで変数(インスタンス)を書いておくと コンフリクトする。 書いておかないとBuilderから参照できない。 そういうことだ。
コーディングルール? で、解決できないわけ?
理解してないなら答えなくていいよ
>>941 AS2だとintrinsic class置いとけば解決できたような気がするが
AS3はシラネ
>>950 ちょっと試してみたが
intrinsicはどうやらAS3ではサポートされていないようだ。残念。
代替えキーワードないんかなー。
お、読み込み先classをdynamic public classにしておくことで解決できたー
感動。
dynamicクラスって理解してなかったけど、今つかめました。
解決の糸口を与えてくれた
>>951 に大感謝。愛してる。
intrinsic classって使った事ないんだけど、Flexで作業する時に必要になるの?
955 :
934 :2007/11/07(水) 12:09:54 ID:2UEG1Wkj
>>936 ,940
ありがとうございます。今日一日教えていただいた方法を試して見ます。
956 :
mimi :2007/11/07(水) 16:43:07 ID:8gw1qoGS
index.swfを自分自身が読み込まれるまで待つっていうスクリプトを 教えてください。 ローダーは外部になります
>>956 普通に自分がやりたいことを詳しく書いてくれた方がレス付くと思うよ
その文章だけだと理解できん
>>952 子インスタンスの名前についてコンパイル時にチェックしなくても十分なら
素直にDisplayObjectContainer.getChildByName()使いなさい
959 :
Now_loading...774KB :2007/11/08(木) 11:45:27 ID:xscr7s/5
AS3についての質問です。 package { import flash.display.MovieClip; public class test002 extends MovieClip{ var com_ary:Array; function test002(){ var i:int = 0; for (i=0; i<=10; i++) { com_ary[i] = "st"+i; trace(com_ary); } } } } TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at test002$iinit() となってしまいます。 何が原因なんでしょうか?
配列をnew Array()してないからでそ
961 :
Now_loading...774KB :2007/11/08(木) 11:50:36 ID:xscr7s/5
>>960 あ、コンストラクタで初期化すればいいんですね。
ありがとうございました。
962 :
Now_loading...774KB :2007/11/08(木) 14:12:54 ID:gC+NNbdE
文字を点滅させて表示させたいのですが、どうやってやればいいですか?
setIntervalかTimerでvisible操作するとか
964 :
Now_loading...774KB :2007/11/08(木) 14:40:35 ID:gC+NNbdE
初心者なもので記述方法が全然わかんないんですが教えていただけないでしょうか・・?><
>>964 1.文字を点滅させるよりは簡単なASを勉強する
2.文字を点滅させるASを勉強する
これでおk!
まあダイナミックテキストと静止テキストの区別すら付かない初心者なら
適当にタイムラインで文字を出したり消したりするアニメーションを作ればいいと思うよ
基礎を教えるスレではないしな
967 :
Now_loading...774KB :2007/11/08(木) 15:16:39 ID:gC+NNbdE
了解。 ありがとうございました!
968 :
Now_loading...774KB :2007/11/08(木) 16:23:32 ID:4pG4BDi8
CS3を使用しています。 this.onEnterFrame = function(){ this.loadMovie(XXXX.jpg); } というように画面内に画像をXMLファイルから読み込みたいと思っています。 ------------------------------------------------------------ xmlIndex.blogURL = rootNode.attributes["blogURL"]; ------------------------------------------------------------ というような定義をして「xmlIndex.blogURL」に「test.jpg」と出力はできるのですが ------------------------------------------------------------ this.onEnterFrame = function(){ this.loadMovie("test.jpg"); } ------------------------------------------------------------ ↑を↓のようにすると画像が出力されません。 ------------------------------------------------------------ this.onEnterFrame = function(){ xmlIndex.blogURL = rootNode.attributes["blogURL"]; this.loadMovie("xmlIndex.blogURL"); } ------------------------------------------------------------ 何がいけないのでしょうか?ご教授宜しくお願い致します。
969 :
Now_loading...774KB :2007/11/08(木) 16:26:07 ID:4pG4BDi8
CS3を使用しています。 this.onEnterFrame = function(){ this.loadMovie(XXXX.jpg); } というように画面内に画像をXMLファイルから読み込みたいと思っています。 ------------------------------------------------------------ xmlIndex.blogURL = rootNode.attributes["blogURL"]; ------------------------------------------------------------ というような定義をして「xmlIndex.blogURL」に「test.jpg」と出力はできるのですが ------------------------------------------------------------ this.onEnterFrame = function(){ this.loadMovie("test.jpg"); } ------------------------------------------------------------ ↑を↓のようにすると画像が出力されません。 ------------------------------------------------------------ this.onEnterFrame = function(){ xmlIndex.blogURL = rootNode.attributes["blogURL"]; this.loadMovie("xmlIndex.blogURL"); } ------------------------------------------------------------ 何がいけないのでしょうか?ご教授宜しくお願い致します。
>>969 this.loadMovie("xmlIndex.blogURL");じゃなくて
this.loadMovie(xmlIndex.blogURL);じゃないの?
971 :
960 :2007/11/08(木) 16:43:37 ID:4pG4BDi8
>>970 早速のご回答ありがとうございます。
>this.loadMovie("xmlIndex.blogURL");じゃなくて
>this.loadMovie(xmlIndex.blogURL);じゃないの?
下のほうでも試したのですがダメでした。
ネットでもかなり調べたのですが、かなり複雑のものが多く、
ただ「XMLに書かれたjpgを出力する」だけというのシンプルなものが
ないんですよね・・
>>971 xmlをロードをする。
読み込み完了を待つ。
読み込まれたxmlのなかの値を参照して外部ファイルをロードする。
外部ファイルのロード完了を待つ。
以下の手順をきちんと踏めばできるはず。
それぞれの動作は「シンプルなもの」だ。
そもそもなんでonEnterFrameで読み込んでんの?
ロード終わったらdeleteしてるの?
973 :
Now_loading...774KB :2007/11/08(木) 20:56:23 ID:J/4d1WXC
obj=new Object; iName="TEXT"; t="test"; obj["item"]={iName: t}; iNameを"TEXT"としてobjに代入したいのですがどうしたらいいんでしょう?
質問の意味がわからないんだけど、こういうことじゃなくて? obj = { TEXT:"test" }
>>973 obj = {iName : "TEXT"};
または、
obj = new Object();
obj.iName = "TEXT";
これでどうでしょ?AS2だけど
AS2の話です。 すみません質問がド下手でした orz obj["item"]={iName: t}; のiNameの部分を変数iNameとして扱って、 中のTEXTという文字列でラベルを作る。 要するに obj["item"]={TEXT: t}; のようにしたいということです。
むむむ… objオブジェクトに変数iNameの中身("TEXT")が名前になってるプロパティを作る、てことでいいのかな? なら、 var iName:String = "TEXT"; obj[iName] = t; でいけるかな? 力不足でスマン
978 :
Now_loading...774KB :2007/11/08(木) 21:48:12 ID:J/4d1WXC
>>977 最終的に、
obj―item1-TEXT1: "test", TEXT2: "test"
亙tem2-TEXT1: "test", TEXT2: "test"
亙tem3-TEXT1: "test", TEXT2: "test"
こういう構造を作りたいので、
forで{"TEXT"+i: t}などとやってラベルを作りたいんです。
なのでとりあえずobj["item"]に{TEXT: "test"}を放り込みたいんです。
↓こうでした。 obj 亙tem1-TEXT1: "test", TEXT2: "test" 亙tem2-TEXT1: "test", TEXT2: "test" 亙tem3-TEXT1: "test", TEXT2: "test"
>>978 多次元が分からないだけかな?
iName = "TEXT1";
obj = new Object();
obj["item1"] = new Object();
obj["item1"][iName] = "test";
981 :
977 :2007/11/08(木) 22:00:09 ID:6eO0JI+R
そうか、じゃあ、 iName = "TEXT"+i.toString(); obj["item1"][iName] = t; これでできんかな?
>>980 ,
>>981 なるほど、多次元か。
配列と同じなんですね。
解決しました。
ありがとうございます!
983 :
Now_loading...774KB :2007/11/09(金) 00:01:28 ID:jP3mppC7
ゲーム作りを頼まれたので、ASを学ぼうとしています。 AS2.0についてはりぼてASみたいに説明してるところってありますか? はりぼてASはAS1.0だって友人が言っていたので…。
すいません途中で送ってしまった上上げてました・・・。 ゲーム作りを頼まれたので、ASを学ぼうとしています。 しかし初心者なのではりぼてASで学ぼうとしたんですが、 学ぶからには今主流のAS2.0を学んだ方がいいかなと思ったんです。 今後のためにもなりますし。。。 そこで、AS2.0についてはりぼてASみたいに説明してるところってありますか? はりぼてASはAS1.0だって友人が言っていたので…。
ActionScriptでぐぐればごろごろ出てくる。 どういうゲームを作ろうとしてるのか知らんが、 そんなことで質問してるようじゃまともにゲーム作れるまで相当時間かかるぞ
986 :
969 :2007/11/09(金) 09:07:44 ID:WWPl5JgG
>>972 ご回答ありがとうございます。
初心者というか基本的な部分が分からず、既にあるソースを改変して
作っているので、良くわからないんです。
その後検索したら、Adobeのサイトでよいサンプルが見つかったので
こちらを基に作成したいと思います。
ご回答くださった方ありがとうございました。
987 :
Now_loading...774KB :2007/11/09(金) 16:05:14 ID:qvSjiwjG
今Flashでブロック崩しのゲームを作ってるのですが 携帯で試しにやってみたところ、バーが左右に動きません。 誰か詳しい方教えていただけないでしょうか? ちなみに今は onClipEvent (enterFrame) { // 左キーを押したとき if (Key.isDown(Key.LEFT)) { _x = _x - 3; // 左に移動 } // 右キーを押したとき if (Key.isDown(Key.RIGHT)) { _x = _x + 3; // 右に移動 となっています。 よろしくお願い致します
Key.isDown(Key.LEFT) が携帯非対応なんじゃね?
FLEX2勉強中です。 <mx:Script>内のASで var myimage:Image=new Image(); myimage.load("xxx.jpg"); てな感じで画像を扱う場合、loadがCOMPLETEした後なのに myimage.width がなぜか0になってて画像のサイズが得られません。 使い方変ですか?FLEXではこういう使い方はしないの?
990 :
きくりん :2007/11/11(日) 12:40:24 ID:Vj2kc08b
初心者なので教えて欲しいのですが・・・ maskimgx = 500000; mask._width = maskimgx; move = 8; moveb = 0; onEnterFrame = function() { moveb += move; mask._x = moveb; mask.image._x = -moveb; mask._xscale = (maskimgx/moveb); if (mask._x>=400) { this.onEnterFrame = null; } } stop(); で次のエラーが出ます・・ 1152: 継承した定義 flash.display:DisplayObject.mask (名前空間 public) にコンフリクトが存在します。 原因を教えてください。
環境書いてないので何とも言えないが、 AS2のソースをAS3でパブリッシュしようとしてるとか。
ただ単に、"mask" と言う変数を自分で宣言していて、それが継承した所に既に存在していて、変数がかぶっている・・・
>>989 っmyimage.contentWidth
>>993 contentWidthなんてプロパティあったんだ。
できました、ありがとー!
995 :
きくりん :2007/11/11(日) 20:38:17 ID:NzP66sqR
すみません。素人で・・・ "mask" と言う変数を自分で宣言していて、それが継承した所に既に存在していて、変数がかぶっている との事ですが、どのように解決すればいいのか解りません・・・教えてください。
きくりんちゃん
maskって名前をやめて、myMaskとかに変えてみたら?
.
.
1000ならジュースでも飲むか
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。