ActionScript 誰かが物凄い勢いで解答するスレ 14
5 :
Now_loading...774KB :2006/09/08(金) 23:04:58 ID:15xbN+xo
単純な質問なんですが、 ugokiっていうスクリプトは、日本語用なんですか? 英語に置き換えると、何に当たるんでしょう。
JavaScriptでF5を殺しているのですが、 FlashにフォーカスがあるとJavaScriptが効かず、 更新されてしまいます。 これをASで防ぐ方法はありますでしょうか? Flash Player 8でIEを使用しています。
Macromediaは何故on(press)とかよりaddEventListenerを推奨してるの?
9 :
Now_loading...774KB :2006/09/10(日) 22:02:17 ID:sAqYyKHD
>>8 onとかonClipEventは大昔のやり方だから
AS3.0だとその記述が無くなるから
全てFlashで出来ているページを作ったのですが Flashにフォーカスを合わせるとマウスホイールでIEのスクロールが出来なくて困っています。 ゲーム系のページでは、Flash部分を選択してもスクロールが出来るので もしかしたらHTMLにtableを作ったり縦長の画像を置いたら、と思ったのですが やはりFlashにフォーカスが合わさるとスクロールが出来なくなってしまいますorz どのようにしたらスクロールが出来るようになるのでしょうか?
13 :
Now_loading...774KB :2006/09/11(月) 14:10:31 ID:QpaDE9Yn
キャレットの位置取得と挿入について質問(FlashMX2004ver7.2使用) テキストフィールド(インスタンス名:txt1_ins)の任意の文字列中の任意の 位置(キャレットの位置)に、[good]か [no_good]の文字列を挿入させるASを 書いています。 先ずは、キャレットの位置を取得するため、txt1_insに適当な文字列を書いて、 その中にキャレットを置いて、ボタンアクションで on (release) { ca1 = Selection.getCaretIndex("txt1_ins"); //キャレッの位置を取得 trace("CA= "+ca1); } としましたが、-1しか返りません。アドバスを願います。
Selection.getCaretIndex();って引数とるの?
15 :
13 :2006/09/11(月) 15:46:51 ID:muMh8rPF
>>14 Helpを再度参照しました・・・・ 引数要らないですね。
意図としては、テキストフィールドが複数ある場合に、それを指定して
キャレット位置を取得することでした。
色々しましたが、単純に Selection.getCaretIndex(); としても
駄目でした。 どうすべきでしょうか?
テキストフィールドクリックしてみ。 onMouseUp=function(){ trace(Selection.getCaretIndex()); }
17 :
13 :2006/09/11(月) 19:18:42 ID:l32qb0zO
>>16 有難うございます。onMouseUpでは位置が取得できましたが、ボタン:goodB
を設定して
this.goodB.onRelease = function () {
trace("/onRelease/");
po = Selection.getCaretIndex();
trace(po);
};
とすると、
/onRelease/
-1
のように表示されます。これは何故でしょうか?
18 :
Now_loading...774KB :2006/09/11(月) 19:24:25 ID:tPMCEDZl
ボタンにロールオーバーすると、フレームのA地点に行き、 そこでAムービーが再生されます。 ボタンをロールアウトすると、フレームのB地点に行き、 そこでBムービーが再生されます。 このAとBのムービーは、 同じ時に存在してはいけないムービーです。 ゆっくりロールオーバー、ロールアウトしている時は反応するのですが、 早いと、再生ムービーが入れ替わってしまいます。 ロールオーバーするとB地点Bムービー、 ロールアウトするとA地点Aムービーのようになります。 aボタンだけで早く触っていても問題ないのですが、 aボタンをロールオーバーした後、すぐにbボタンをロールオーバーすると 間にロールアウト空間があるにも関わらず、 ロールアウトしたことにならないようなのです。 解決方法をお教えください。お願いします。 a.onRollOver = function() { gotoAndPlay("シーン1,A"); } a.onRollOut = function() { gotoAndPlay("シーン1,B"); } b.onRollOver = function() { gotoAndPlay("シーン1,A"); } b.onRollOut = function() { gotoAndPlay("シーン1,B"); }
ボタンが二つある理由は?
20 :
Now_loading...774KB :2006/09/11(月) 19:34:34 ID:6m49jA6B
>>18 ボタンだけ別レイヤーにしてフレームを跨げ
シーンは使うな
21 :
Now_loading...774KB :2006/09/11(月) 19:42:15 ID:tPMCEDZl
お返事ありがとうございます。 ボタンそれぞれにロールオーバーした際に 別々の説明文が出ます。 この説明文ムービークリップは、ボタンのオーバーフレームに仕込んであります。 リリースするとgetURLでそれぞれのページに行きます。 AとBのムービーは、この説明文の背景です。 Bはループしているムービークリップです。 Aは、ロールオーバーした際に、Bが変形するアニメーションをムービークリップとしていて これはループさせていません。 素早くaとbのボタンを行き来した際、ボタンのオーバーフレームに仕込んでいる 説明文ムービークリップは、間違いなく動作します。 gotoAndPlayさせて表示するムービークリップだけが ロールアウト反応しないようなのです。
22 :
Now_loading...774KB :2006/09/11(月) 19:46:26 ID:tPMCEDZl
>>20 ありがとうございます。
ロールアウトした時のムービーが
一つだけしかないのですが、
ボタン2つとも、アップ位置にムービーを仕込むと
誤動作しないものでしょうか。
同じタイミングで動くものなのでしょうか。
さっぱり意味解らん flaファイルうp
24 :
Now_loading...774KB :2006/09/11(月) 20:23:48 ID:tPMCEDZl
はい。ダミーを作ります。 少しお時間ください。 お願いします。
>>17 フォーカスがはずれてるから。
つかさ、どうやってテキストフィールドを指定するつもりなんだよ。
ヘルプ読んだならそんぐらいわかるだろ。
ありがとうございます!! こんなに変わるなんて。 作り方が全然違うので驚きました。すごい!! 感謝いたします!! このファイルを参考に作り直します。 本当にありがとうございました!!!!
29 :
Now_loading...774KB :2006/09/12(火) 22:50:52 ID:oVPJzFhb
Ctrlキーを上げたときの感知法について質問 FlashMX2004を使っています。 インスタンス.onRelease= function() { } のように、Ctrlキーが上った場合の 動作を記述するにはどうすればいいでしょうか? myKey = new Object(); myKey.onKeyUp = function() { if (Key.CONTROL == 17) {//Key.CONTROLは17 trace("KeyUp "); } }; Key.addListener(myKey); と記述した場合、全てのキーに反応してしまいます。 よろしく願います。
>>29 if (Key.CONTROL == Key.getCode()) {
31 :
29 :2006/09/12(火) 23:09:18 ID:oVPJzFhb
早速、ありがとうございます。 やってみます。
>>29 それは if(17 == 17) と書いてるのと一緒だよw
>>32 Key.getCode()は最後に押したキーのコードなんだから、それが17ならって条件はそれでよくね?
XPでFlash8Proを使ってWebアプリを作り HTMLに埋め込んだのですが、swf部分にフォーカスを合わせると マウスホイールのスクロールがブラウザに反映されなくて困っています。 他のFlashを埋め込んでいるサイトでは ちゃんとブラウザの方のスクロールも出来ているのですが JavaScriptやFlashの方でマウスホイールのイベントを 操作するようなことが必要なんでしょうか?
>>35 どっかでMouseクラス使ってない?
Mouse.onMouseWheelでマウスホイールの回転が取得できる(ヘルプに例あり)
今テスト用にSWFを作ってみたのですが
ステージにFlash8標準のコンポーネントを置くと
ブラウザのスクロールができなくなるようでした。
ボタン化したシンボルではスクロールは出来るのですが
標準のボタンやテキストエリアを配置するとまた…
>>36 作ったWebアプリでは使っていましたが
今回作ったテスト用ではclickのリスナーのみで、
リスナーの有無では変わりませんでした。
やはりコンポーネントの有無のようなのですが、
これは仕方ないんでしょうか…?
38 :
Now_loading...774KB :2006/09/13(水) 14:30:03 ID:2th2+CC0
キーコードにおけるEnterキーについて質問(FlashMX2004でPlayer7を使用) 各種キーのコードによる動作を記述するため下のASを書きましたが、プレビューで 再生した際、EnterキーのみがSWFの画面をクリックして(SWFをアクティブにして?) なおかつ他の任意のキーを押して初めて「Key= 13」と表示されます。 myKey = new Object(); myKey.onKeyUp = function() { trace("Key= "+Key.getCode()); keycode=Key.getCode();//テキストフィールドに表示 }; Key.addListener(myKey); これはEnterキーの特殊性によるものでしょうか? それと、このようなステップを回避する方法は有りますでしょうか?
プレビュー画面の「設定」かな?どっかに「キーボードショートカットの無効」みたいなのがあるから それチェック そうすれば多分enterキー普通に認識してくれる
確かALTか何か押しながらだとプレビューのショートカットが無効に なると思ったけど
>>42 //Flash
txt.text = str;
//html
test.swf?str=%C7
最終的にはCGIから変数を取得する形なのですが、
新規ファイルで簡素にhtmlで試してみたのですが表示されませんでした。
フォントを埋め込んでみても変わりません。
普通の文字列なら表示されます。
45 :
AS使い :2006/09/13(水) 22:32:16 ID:VLEzetSg
>>43 ttp://limit10.com/upload/view.php?file=up1752.swf あー疲れた。あってるかどうかは自分で調べてくれw
À %C3%80 Á %C3%81 Â %C3%82
à %C3%83 Ä %C3%84 Å %C3%85
Æ %C3%86 Ç %C3%87 È %C3%88
É %C3%89 Ê %C3%8a Ë %C3%8b
Ì %C3%8c Í %C3%8d Î %C3%8e
Ï %C3%8f Ð %C3%90 Ñ %C3%91
Ò %C3%92 Ó %C3%93 Ô %C3%94
Õ %C3%95 Ö %C3%96 × %C3%97
Ø %C3%98 Ù %C3%99 Ú %C3%9a
Û %C3%9b Ü %C3%9c Ý %C3%9d
Þ %C3%9e ß %C3%9f à %C3%a0
á %C3%a1 â %C3%a2 ã %C3%a3
ä %C3%a4 å %C3%a5 æ %C3%a6
ç %C3%a7 è %C3%a8 é %C3%a9
ê %C3%aa ë %C3%ab ì %C3%ac
í %C3%ad î %C3%ae ï %C3%af
ð %C3%b0 ñ %C3%b1 ò %C3%b2
ó %C3%b3 ô %C3%b4 õ %C3%b5
ö %C3%b6 ÷ %C3%b7 ø %C3%b8
ù %C3%b9 ú %C3%ba û %C3%bb
ü %C3%bc ý %C3%bd þ %C3%be
ÿ %C3%bf
>>44-45 ありがとうございました。無事表示できました。
やはりアドビの間違いだったんですね。
>>45 swfありがとうございます。
凄すぎです。かなり便利でマジで助かります。
FLASH使った広告で、 広告が載っているエリアにカーソルを乗っけると、そのエリアから紙飛行機が飛び出して 広告エリア外を飛び回るように見えるのがあるんだけど、どうやってるんだろ?
javascriptでレイヤーだよ
DHTMLとLocalConnectionだろ。
50 :
Now_loading...774KB :2006/09/15(金) 00:02:35 ID:cxJ1z3PC
16進数表示でかかれたものを数字になおすにはどうすればいいですか? 0x??????の形をしているんですけれど・・・。
trace("0xFFFFFF"); //0xFFFFFF trace(Number("0xFFFFFF")); //16777215 trace(0xFFFFFF); //16777215
52 :
Now_loading...774KB :2006/09/15(金) 00:19:43 ID:WfsJEF5g
なんとなく、感じはわかりました。 いじってたらできたみたいです。 ありがとうございました。
53 :
38 :2006/09/15(金) 03:59:27 ID:RBoZZgc0
>>39 , 40
ありがとうございます。
「キーボードショートカットの無効」をチェックしましたが、ダメでした。
やっぱり、一旦画面をクリックしてEnter以外の何らかのキーを打たないと
Enterのキーコードが得られません。
>>53 myKey.onKeyDown = function() {...};
でどうかな
55 :
Now_loading...774KB :2006/09/15(金) 14:58:46 ID:uNXeGH51
環境:FlashMX2004でPlayer6 getTimer()を使ったフレームの移動を試みています。約2秒後に2フレ目に 移動させたいのですが、1フレ目で止まったままです。 this.stop(); startT = getTimer(); this.onEnterFrame = function() { trace("Timer= "+getTimer()); }; if ((getTimer()-startT)>2000) {//約2秒後に2フレ目に this.gotoAndPlay(2); } traceでは時間の経過は取得できています。原因は何でしょうか?
this.stop(); startT = getTimer(); this.onEnterFrame = function() { trace("Timer= "+getTimer()); if ((getTimer()-startT)>2000) {//約2秒後に2フレ目に this.gotoAndPlay(2); } };
58 :
38&53 :2006/09/15(金) 16:08:42 ID:pxxFKUv1
(Enterキーのキーコードの取得)
>>54 試してみましたが、やっぱりダメでした。
どうも、A)Enter以外のどれかのキーを押す, B)画面をクリックする
の順番は問いませんが両方を行う必要がありそうです。
俺もプレビューじゃEnterは取得できないけど(Macだが) ビルドしたら普通に取得できるよね プレビューじゃ仕方ないんじゃない?
うちの環境だとキーボードショートカットさえ無効になってればプレビュー→ENTERでも認識された 環境依存なんじゃね? どっちみち、ウェブで閲覧してる時は一度クリックしてフォーカスをフラッシュに合わせる必要があるんだからきにすんな
こんばんは。さっそくですがお願いいたします。 現在あるターン制の戦闘ゲームアクションの戦闘画面を作成しているのですが回避処理させるスクリプトで手間取っています・・・。 私が希望する処理は以下のとおりです。 回避といいましてもステータスの名称が「TEC」であり、命中と回避を含めているものといたします。 よって、相手より低いとあたらない という意味(を示しているとおもう・・・)です。 「もし 回避があいてより低くいと低ければ低いほどあたらない。」 これだと100とかに範囲指定したら差が100以上になるとまったくあたらない というスクリプトができるんですが・・・。 私のゲームはプレイヤー、モンスターともども最初のステータスがほぼ20〜40なので 差が100以上になることはありません・・・。 さらに申し上げますと、終盤あたりだとプレイヤー、モンスターともどもステータスが1000を突破いたします。 もし自分が1200、相手が1400 でも多少はあたるようにしたいのです。 ちょっとあつかましい限りの要望ですが・・・お願いいたします。
>>61 ゲーム制作スレの方が良いレス付くと思うよ。
trace(hitornot(40,50));
trace(hitornot(100,110));
trace(hitornot(900,110));
function hitornot(exp1,exp2){
return exp1 / ( exp1 + exp2 ) > 0.5 ? true : false;
}
こんなのしか思いつかん。
>>61 結局、差が100をこえるのか、こえないのか、どっち?
差が限界をこえている時でも、低い確率であたりが出るように条件を付加すればいいだけじゃないのか?
差が-300以下なら5回に1回、-100以下なら3回に1回あたるとか。
>>61 今唐突に思い浮かんだんだけど
function hitCheck(myTec,oppTec){
if(Math.random()*myTec>Math.random()*oppTec){
return "hit";
}else{
return "miss";
}
}
ってどうかな。これだと自分の値が高ければ高いほど有利だし、低ければ低いほど不利だけど、
どっちかが絶対当てるっていう状況にはならない
65 :
55 :2006/09/15(金) 20:10:43 ID:APAMKulk
>>56 ,57
ありがとうございます。2フレ目に移動できました。
しかしながら、1フレ目にしかtrace("Timer= "+getTimer()); の記述
が無いにも関わらず、2フレに入っても経過時間が表示されます。
これを止める方法はありますか?
>>65 あります
onEnterFrameの意味を解ってないようなので自分で調べて下さい
>>62 レスありがとうございます。参考にさせていただきます。あと以後そうさせていただきます^^;
>>63 ありがとうございます。参考にさせていただきます。あまり多くのスクリプトを書くと
私の低脳では紛らわしいことになりますので・・・;
>>64 相手の回避と自分の回避が同じなら結構あたりはずれあるようですね。
ありがとうございます。なんとかそのスクリプトを有効活用させていただきます。
どうも、失礼しました。
68 :
AS使い :2006/09/15(金) 20:35:54 ID:t8VtLadW
>>65 this.stop();
startT = getTimer();
this.onEnterFrame = function() {
trace("Timer= "+getTimer());
if ((getTimer()-startT)>2000) {//約2秒後に2フレ目に
this.gotoAndPlay(2);
delete this.onEnterFrame;
}
};
または
this.stop();
function hoge() {
this.gotoAndStop(2);
clearInterval(id);
}
id = setInterval(this,"hoge", 2000 );
再生ヘッドがあるところのフレームラベル(指定してあったとして)とかってASで取得できましたっけ? バージョンはMX2004です
70 :
69 :2006/09/15(金) 20:43:28 ID:GYmYVQaF
あ、すみません いきなり解決しました フレームラベルを置いたタイミングでダミーのMC配置して、その存在確認することで対応しました
>>61 差が自分のステータスの何%かを計算すればいいんじゃない?
自分1000で相手が800なら差が200だから20%の確率で回避
>>69 this._currentframe
>>71 再生ヘッドがどのラベル区間にいるか簡単に認知したかったんです。
_currentframeを見ることでもできるんですが、その場合、それぞれのラベル区間の
頭とケツの番号を条件式にかけないといけないので面倒だったので。。
すみません。
AS3.0の質問もココでいいのでしょうか?
どうぞ
75 :
Now_loading...774KB :2006/09/16(土) 01:55:10 ID:EsepToa3
FlashMX2004(Player6か7)を使っています。 マウスを使わずに、キーボードでボタンアクションさせる方法は有りますで しょうか?(キー操作をマウスの代用にする) つまり、Tabキーでフォーカスが移動できるボタン@,A,B があった時、 キーボードのAを押すとボタン@の、Bを押すとボタンAのon(release){}の 動作をさせるものです。 押したキーの判別は、以下の様にキーコードで行う予定です。 btnKey = new Object(); btnKey.onKeyUp = function() { trace("Key= "+Key.getCode()); // //動作の内容の記述 // }; Key.addListener(btnKey); よろしく願います。
>>75 できない。けど関数にしちゃえば同じことが出来る
function Hoge(){
//動作の内容の記述
}
後はボタンのon(release){}やonKeyUpのとこでこの関数を呼んじゃいなよ。
>>75 //まずボタンアクションをフレームで定義する
btn0.onRelease=function(){
trace("btn0");
}
btn1.onRelease=function(){
trace("btn1");
}
btn2.onRelease=function(){
trace("btn2");
}
//キーリスナ登録
btnKey=new Object();
btnKey.onKeyUp=function(){
var tempNum=Key.getCode();
if(tempNum==65){
btn0.onRelease();
}else if(tempNum==66){
btn1.onRelease();
}else if(tempNum==67){
btn2.onRelease();
}
}
Key.addListener(btnKey);
//ボタンとか処理が多いようだったら配列で管理したほうが楽かもね
ボタンイベントをon(press)とかで記述してるSWFに
キーボードショートカットを加えろって言われると
膨大な量の_parent駆除で鬱になってたんだけど
対策法は
>>77 のしかないのかな
on(release)の中身を全部functionで囲って、
フレームのKeyイベントから呼び出す、みたいな…
まぁ…無理だよなorz
79 :
Now_loading...774KB :2006/09/16(土) 04:26:48 ID:dHDahdTX
FlashMX制作中、初心者丸出しで大変みっともないんですが、
_root上に写真読込用mc「main_photo」とタイトル用テキストエリア「title_area」を設置
画像a1.jpg,a2.jpg…サムネイルa1m.jpg,a2m.jpg…という画像を読込ませようと画策
頻繁に追加更新があるのでtitle.txtの更新だけで楽に更新しようと
解説書首っ丈でどうにかこうにか画像サムネイルボタンの自動配置まではなんとかできたんですが
(ソースがみっともないというのはこの際おいといて…)
問題はそのサムネイルボタンからどうやって「main_photo」「title_area」の更新をするのか…
「main_photo」だけならリンクボタンの_nameを使ってon(release)の_root.main_photo.loadMovie("a"+_name+".jpg");とはできるんだけど、これではテキストエリアの方が…
ぜひどなたか良きアドバイスをお願いします
ソースは下記(
>>80-82 くらい)にて…
80 :
Now_loading...774KB :2006/09/16(土) 04:27:50 ID:dHDahdTX
_rootタイムライン上AS //テキスト読込 System.useCodepage = true; _root.loadVariables("title.txt"); _root.onData = function() { //読込んだテキストを配列化 txt_array = title_txt.split("/"); //初期状態(最新画像&タイトル)表示 var total_no = txt_array.length; var newphoto = "a"+total_no+".jpg"; _root.main_photo.loadMovie(newphoto); _root.title_area.text =txt_array[total_no-1]; //画像更新リンクボタン配置 for (i=1; i<=total_no; i++) { var num = i; var btName = num; _root.attachMovie("bt_button",btName,num); btName = eval(btName); btName._x = 90*(total_no-num); btName._y = 300; }; }; リンクボタン上AS(でもこれじゃテキストが…)on(release){_root.main_photo.loadMovie("a"+_name+".jpg");} title.txt内はtitle_txt=タイトル1/タイトル2/…(以下略)
81 :
AS使い :2006/09/16(土) 05:06:42 ID:n9r/LCeZ
>>79-80 あんまり弄ってないけど
_rootタイムライン上AS
//テキスト読込
System.useCodepage = true;
nocache = new Date();
_root.loadVariables("title.txt?"+nocache.getTime());
_root.onData = function() {
//読込んだテキストを配列化
txt_array = title_txt.split("/");
//初期状態(最新画像&タイトル)表示
var total_no = txt_array.length;
var newphoto = "a"+total_no+".jpg";
_root.main_photo.loadMovie(newphoto);
_root.title_area.text =txt_array[total_no-1];
//画像更新リンクボタン配置
for (i=1; i<=total_no; i++) {
var btName = "bt_"+i;
var r=_root.attachMovie("bt_button",btName,i);
r.my_no=i
r._x = 90*(total_no-i);
r._y = 300;
};
};
//ボタン
on(release){_root.main_photo.loadMovie("a"+my_no+".jpg");_root.title_area.text=_root.txt_array[my_no-1]}
>>81 こんなに朝も早くから…
ものすごく、もう海よりも深く感謝します
実際うまくいって、昨日までの苦労はなんだったのかと(苦笑
var r=_root.attachMovie("bt_button",btName,i);
こういう手段があるとは…ASは奥が深い…
83 :
75 :2006/09/16(土) 17:27:59 ID:HuTVvpf0
DataGrid(Listでも同じなのですが)の 各セルへの参照方法についての質問なんですが 取り合えず各セルにアクセスしてみようと スクリプトを組んでみたんですが、何か全く違う方向に脱線した気がします。 DataGrid名「my_data」 my_data.addItem({data:"DataGrid", label:"datagrid"}); my_data.addItem({data:"List", label:"list"}); my_data.addItem({data:"Loader", label:"loader"}); var Listener:Object = new Object(); Listener.itemRollOver = function(evt:Object) { trace(evt.index); trace(my_data.getItemAt(evt.index).data); //trace(evt.itemIndex + " _ " + evt.columIndex); //cellPressの時有効 }; my_data.addEventListener("itemRollOver", Listener); ここまで行き着いたんですけど、これ関係ないですよね...orz 各セルをオブジェクト(MC)として渡したいんですが、どう参照すればいいんでしょうか function = test_func(cel_obj:Object){ } test_func(【各セルのムービークリップ...my_data.rows(2)?】);
flash8proです。 ステージに動画ファイルを配置しています。 通常はループする仕組みになっていますが ステージ上のボタンにロールオーバーすると 動画の指定した秒数へ早送りしたいのです。 (その後また通常の速度でループへ。) 色々調べてもシークバー制作関連の情報しか 見つけることしか出来ませんでした。 ちなみに動画の無限ループの設定も分かりません。 ヘルプにも再生回数の指定しか記載されてないですよね。 今のところ再生回数を99999のように指定していますが できれば無限というような指定がしたいのです。 是非、力をお貸し下さい。お願いします。
86 :
Now_loading...774KB :2006/09/18(月) 12:23:38 ID:gl+8/sEZ BE:154172257-2BP(123)
>>85 シークバーをスクリプトで動かして早送りするしかないけど
音声がぶちぶち切れて不快になるから音は無音にしたほうがいいね。
無限ループという設定は無いけど1秒の動画を0x7FFFFFFF回ループ
しようと思ったら69年かかるから問題ないんじゃない?
>1秒の動画を0x7FFFFFFF回ループ しようと思ったら69年かかる 萌えた
>>84 var Listener:Object = new Object();
Listener.itemRollOver = function(evt:Object) {
mc = my_data.rows[evt.index];
};
my_data.addEventListener("itemRollOver", Listener);
>>88 []で指定しないといけなかったんですね
勉強になりました、ありがとう御座います。
でもまさかヘルプにものってないメソッドがあるとは
90 :
Now_loading...774KB :2006/09/18(月) 22:22:11 ID:etZO5kjG
シンボルの色の設定(アルファ値とか)の設定のところに"着色"ってあるじゃないですか。 あれをスクリプトでいじるにはなんと記述すればいいんでしょうかね? ぜひ誰か教えてください。
91 :
Now_loading...774KB :2006/09/19(火) 00:06:42 ID:wEIEwmlB
もう1つだけいいですか? loadMovieでの読み込みが終わったらっていうのは何と記述したらよいでしょう? (loadVariables の onData のようなものが知りたいです。)
>>91 loadMovieは大昔のやり方
MovieClipLoaderクラス使え
携帯用の機能についてなんですがここでも良いでしょうか・・・ バイブレーションをエンドレスで繰り返したくて vib1 = FSCommand2("StartVibrate", 500, 200); として、ここにループさせるとバイブが「ブブブブ」と切れ目無くかかってしまいます バイブに切れ目があるように且つこの周期を正確に連続するにはどうすれば良いでしょうか
94 :
Now_loading...774KB :2006/09/19(火) 01:41:49 ID:wEIEwmlB
>>92 勉強した本が古いのでw
これから勉強してつかってみます。
on(release)後のアクションを、時間を置いてから実行する方法を教えてください。
HTMLページ中に置いてあるFlashでリファラを取得する方法を教えてください
>>95 setIntervalを使え
>>96 リファラはサーバ側の話なのでFlash単体では無理
>>97 どうも
アクセス解析付きカウンターを作りたかったんです。
諦めて別の仕組みを考えます。
>>97 >リファラはサーバ側の話なのでFlash単体では無理
何いってんの?
>>98 JavaScriptには確かリファラ取得の関数があったから、それとやり取りすれば出来るんじゃね?
>>98 FlashでLoadVars使ってPHPなりのCGI呼べば簡単にリファラ取得できるよ。
カウンター作るならCGIは必須。Flashにファイルにはファイル保存機能無いから。
リファラの取得だけだったら99の言うとおり出来るよ。 単体ではないけど、サーバいらない。 HTML側 <script language="JavaScript"> function getReferrer(){return document.referrer;} </script> Flash側 import flash.external.ExternalInterface hoge.text = ExternalInterface.call("getReferrer") リファラによって処理を分岐したい場合には便利だね。
補足しておくと、document.referrer はクライアント環境によっては取得できない場合がある #ブラウザの実装やセキュリティソフトの挙動 確実に取ろうと思ったらサーバ側で取るしかない まあ9割方 document.referrer で大丈夫だと思う あと、Flash単体で取ることはできない あくまでもブラウザで取得するデータであるため、ブラウザとやりとりする必要がある
サーバ側・クライアント側の言葉の違いが分かっていなかったのでは
>>97 はクライアント側の可能性については言及していなかった(知らなかった?)が、
>>99 はサーバ側・クライアント側両方を否定したとミスリードしたのではないかと
リファラはFlash単体では無理 とだけ書けば良かったんだろうね。
>>102 Flashでjavascript使えるの初めて知った。ありがと。
109 :
Now_loading...774KB :2006/09/20(水) 18:20:51 ID:4hsAv3Vm
ボタンを押している間だけ歩く画像、話すとストップの方法がわかりません
なんとか上下左右に動くMCはできたのですが・・・・・
それとマザー(ゲーム)のような仲間が連なって歩く方法がわかりません
●が先頭として
←●○○
↓
○○
●
↓
○
○
●
↓
のような感じです(説明わかりづらくてすいません
マウスのカーソルにくっついてくるやつの応用でやろうとしたのですがそれだと斜め位置に止まったりするし・・
後、質問ばかりで悪いのですが、
テストプレイ用に作ってみました
http://yu-net.info/swfup/viewswf.php/5025.swf 後、質問ばかりで悪いのですが、↑のFLASHだと手を振ったまま移動できてしまうのですが、それはどうすればいいでしょうか?
詳しい方よろしくお願いします
111 :
Now_loading...774KB :2006/09/20(水) 20:28:45 ID:4hsAv3Vm
>>110 ありがとうございます!! zipだから少しドキドキしたwww
綺麗に連なってますね
本当にありがとうございました
ノートンとかのセキュリティソフトが介入する場合はリファラはサーバー側でも取得できないよ。 ユーザーエージェントと同じでブラウザ依存だからあんまりあてにはできない。
113 :
Now_loading...774KB :2006/09/20(水) 21:07:35 ID:jqTvHy30
on(release){
getURL("
http://hogehoge.com/ " , "_blank");
}
上記のようなアクションスクリプトを記述し、FLASH5でシンタックスチェックを行った
ところ、下のようなエラーが出ました。FLASH6ではエラーが出ません。
**エラー** C:\Documents and Settings\hogehoge\Local Settings\Application Data\Macromedia\Flash 8\ja\Configuration\Classes\toplevel.as: 行 68:このアクションを使用するにはムービーを Flash 6 形式で書き出す必要があります。
#endinitclip
ActionScript エラー数 :1 報告済みエラー :1
ところが、別の.flaで全く同じスクリプトを記述し、FLASH5でシンタックスチェックを
行ったのですが、エラーは出ませんでした。
なぜですか?
えらーのまんまでしょ。 #initclip #endinitclip ↑コレはf6から
115 :
Now_loading...774KB :2006/09/20(水) 21:25:36 ID:jqTvHy30
>>114 お答えありがとうございます。
同じスクリプトでも、他の.flaでエラーにならないのはなぜですか?
116 :
Now_loading...774KB :2006/09/20(水) 21:39:59 ID:jqTvHy30
FLASH5で、ムービークリップ内にアクションスクリプトは書き込めない?
変数が一定値以上になったら フレーム移動というのをやりたいのですが どのようにASをかけばいいのでしょうか?
>>117 if ( cnt >= 10 ) {
this.gotoAndStop(2)
}
>>117 if(変数>=一定値) this.gotoAndStop(フレーム)
>>116 書き込めるかといえば書き込める。
ただクリップアクションの一部やイベントハンドラメソッドなど5では使えないものもある。
>>113 あ、#endinitclipはないのかー。
もう一度swfのパブリッシュ設定を
flash player 5
ActionScript1.0
に手動で再設定してみて。
それでもだめならわかんないねー。
ファイルの破損とかかもね。
今4人のチームでActionScriptの勉強をしているのですが 大分知識が付いてきた今、4人のスクリプトの書き方の統一で迷っています。 1:ifのネストでエラー処理をするのではなく、Errerクラスを使った方がいいのかどうか 2:システム的なFlashを作る際、他言語と連動させる為のLoadVarsは使っていいのか(安全なのかどうか) 3:LoadVarsが安全でないなら他言語と連動させるにはどうスクリプトを書けばいいのか 4:各フレームで同一処理、又は似た処理を行う場合は.asかclassにした方がいいのかどうか 5:classを使う訳でもなく.asファイルにするのは好ましいのかどうか 6:onRelease=functionなどよりListenerを使ったほうがいいのかどうか などで迷っています。 実際にActionScriptで業務的なことをしてる人はどのようにしてるのですか? あと、これは余り関係ないのですが、 システム的なFlash(ショッピングカートやログイン)が少ないのは何故か? ということでも少し考えています。 これはシステム的なFlashを作る際は、ColdFusionの方が安全だからですか? ColdFusionのことは全然知らないんですが、FlashWEBアプリを作る物だと聞いたので…
>>122 > システム的なFlash(ショッピングカートやログイン)が少ないのは何故か?
「アプリケーション(適用業務ソフト)」の“開発”環境としては弱すぎるから。
・ActionScriptという言語の軽さ(業務開発においては足枷以外の何者でもない。AS3では多少マシだがまだまだ)
・クライアント側コンポーネントであるが故の弱点
・セキュリティの脆さ(認証情報とかをクライアント側で持つなんて言語道断)
・直接的なデータベースアクセスができない(HTTPやSOAPのエンドポイントを持つDBなら一応可能だが、セキュリティ的に脆い)
・結局サーバ側開発が必要となる
最近のWeb系開発環境はASP.NETやJavaに代表されるように強力なものが多い
リッチクライアントが求められる場面は少ないし、Ajaxも流行して非同期処理も専売特許ではなくなった
正直、Flashでアプリケーションを組む利点が見つからない
Flashでなければ実現できない、という何かが無ければ工数を増大させるだけだと思う
なお、自分はJ2EEやASP.NETによるWebアプリ開発、Flashによるメディア系Webアプリ開発、PHPとAjaxを使用したダイナミックWebアプリ開発の経験がある
顧客の要望に応じて適材適所な環境を選んでいるが、Flash単体で高度なアプリというのはメディアストリーミングをインターネット経由とか、そういう要件でもないと選ばない
1〜6の質問だけど、まずLiveDocを呼んで、何が推奨されて何が推奨されないかの基礎を学ぶべき
ここでスポット的なレスを見ても、一通りの知識が無ければ振り回されるだけ
まず自分たちなりの標準を確立して、それに対して良し悪しを考えよう
あと、AS以外の開発標準手法も参考にすべき
ちなみにうちはFlashAS開発もコーディング規約やテスト手法の確立を行って、CVSベースのチーム開発環境を確立している
技法はJava系のOoPを参考に、AS用のエッセンスを加えた感じ
強い言語に比べると面倒な作業だったよ
環境:WindowsXP,Flash8pro FlashLite1.1のFSCOMMAND2でsignalLevelを取得したとき vodafone(softbank)での返り値を教えてください。
htmlからflashへ 変数を渡そうとしているのですが、 英数字は問題ないのですが日本語が文字化けしています。 System.useCodepage = true;は入れているのですが変化はなく、 string変数とかのせいかなと思いつつ どうしたら良いのかその辺りが良く分からない現状です。 もし分かる方がいらしたら御教授お願いします
127 :
Now_loading...774KB :2006/09/21(木) 05:49:48 ID:zQ/68myC
環境:FlashMX2004でPlayer6
任意の関数に沿って動く(音量ボリュームなどの)スライダーを作ろうとしています。
ここでは関数 Y=X に沿うようなASを試しています。
x0,y0をMCがロードされた時の位置(初期値)とし、left = x0; right = left+400;
として、またMCのX軸方向の移動量を prsnX-x0 とおいて、下の様に書きました。
on (press) {
prsnX = this._x;
top = y0-(prsnX-x0);//Y=X関数
bottom = top;
this.startDrag(false, left, top, right, bottom);
trace("this._x="+this._x);
}
on (release) でthis.stopDrag();
これだと、
http://yu-net.info/swfup/viewswf.php/5029.swf のように、おおよそ Y=X 関数に沿って移動しますが、滑らかに動かずギザギザ
というか階段状になり、都合が悪いです。 どうしたものでしょうか?
128 :
124 :2006/09/21(木) 07:46:01 ID:zA/Ruv1K
>>126 ヘルプの記述では
>その他の数値 :現在の信号レベル (0 から GetMaxSignalLevel が返す最大値の範囲)
としか書かれていません。
docomo と au で 戻り値が違ったのでvodafoneの戻り値が知りたかったのですが…
129 :
Now_loading...774KB :2006/09/21(木) 11:53:01 ID:2Qp6sOsH
ところで、Flash5を使用している人って
ActionScript1.0 か ActionScript2.0を選択出来ないんですかね?
>>121 ActionScript1.0で動作しました。
ありがとうございます。
130 :
Now_loading...774KB :2006/09/21(木) 12:03:43 ID:aqzBTS/s
Math.sinのことで質問です。 以下のスクリプトで実験すると for (var i=0; i<=360; i+=30) { trace(i+" : "+Math.sin(i*Math.PI/180)); } iが180と360のとき、予想とは違った値になってしまいます。 正しい値を取得するにはどうしたらいいのでしょうか?
>>129 >Flash5を使用している人って
>ActionScript1.0 か ActionScript2.0を選択出来ないんですかね?
できないよ。AS2.0という考えがなかった時代のアプリだもの
>>130 間違ってはいないかな。有効桁数が15ケタだし、
180度の時のラジアンは円周率の値だけどさ、10進数だと3.1415...とずっと続くしょ?
だから正確な値を返すと膨大な桁数になるし、そもそもできないから近似値を返してる。
よっぽどの精度が必要じゃないのなら、round関数で丸めた値を使うとかでいいんじゃないかな。
for (var i=0; i<=360; i+=30) {
trace(i+" : "+Math.round(1000*Math.sin(i*Math.PI/180))/1000);
}
class foo {
//!mtasc 8 use strict; class Foo { private var _mc:MovieClip; private var _str:String; public function Foo() { _str = "Foo"; _mc = _root.createEmptyMovieClip("bar",0); with(_mc){ beginFill(0x000000);moveTo(0,0);lineTo(20,0); lineTo(20,20);lineTo(0,20); lineTo(0,0);endFill(); } _mc.onPress = _onPressAction; //_mc.onPress = mx.utils.Delegate.create(this, _onPressAction); //_mc.owner = this; } private function _onPressAction():Void { //_mc.onMouseMove = _onMouseMoveAction; } private function _onMouseMoveAction():Void { trace(_str); } public static function main():Void { var foo:Foo = new Foo(); } }
すいません、書いてる間にできました。。。 質問:2コ目のイベントハンドラの設定で変わるスコープを何とかしたい。 2回Delegateしてやれば、うまくいきました。
136 :
117 :2006/09/21(木) 20:28:54 ID:DJRT4y+y
137 :
Now_loading...774KB :2006/09/21(木) 20:30:33 ID:4jQ6zMcz
startDrag()を別の表現で書こうとしています(ソフト:FlashMX2004_ver7.2) markMというMCに onClipEvent (enterFrame) { this.onPress = function() { this._x = _root._xmouse; this._y = _root._ymouse; }; } を書きましたが、これを押しても一瞬ピクッと動くだけです。 どのように変えたらいいでしょうか?
>>137 逆に考えるんだ。
押したらonEnterFrameが始まると。
139 :
AS使い :2006/09/21(木) 21:04:51 ID:G41evSD/
onClipEvent (load) { bigearmouse = false;//そんな大きな耳のねずみなんて居ないよ this.onPress = function() { this.bigearmouse = true;//居るよ! }; this.onRelease = this.onReleaseOutside=function () { this.bigearmouse = false;//居ないよ! }; this.onMouseMove = function() { if (this.bigearmouse) { this._x = _root._xmouse; this._y = _root._ymouse; updateAfterEvent();//おにいちゃんの馬鹿ー! } }; }
140 :
AS使い :2006/09/21(木) 21:51:53 ID:G41evSD/
onClipEvent (load) { bigearmouse = false; mydgpointx = 0; mydgpointy = 0; rockme=true;//trueで中心にロック falseで最初にクリックした点でロックよ this.onPress = function() { //onPressは押した瞬間に呼び出される関数への参照なの this.bigearmouse = true; //つまりenterFrameで何回定義しようが if(!this.rockme){ //「ドラッグ時に押した瞬間は一回」だからぴくっとしか動かないわけ this.mydgpointx = -this._xmouse; this.mydgpointy = -this._ymouse; } }; this.onRelease = this.onReleaseOutside=function () { this.bigearmouse = false; }; this.onMouseMove = function() {//enterFrameでもいいと思うけど if (this.bigearmouse) { //遅延コードじゃないならMouseMoveがお勧めね this._x = _root._xmouse+this.mydgpointx; this._y = _root._ymouse+this.mydgpointy; updateAfterEvent();//な、なによ!別にあんたのために書き直したわけじゃないんだからね! } }; }
141 :
Now_loading...774KB :2006/09/22(金) 01:26:13 ID:GOE19vua
アナルセックス?
142 :
137 :2006/09/22(金) 02:50:23 ID:kTbPbsn4
>>138-140 ありがとうございます。
コメントが暴走気味に感じるのはワタシだけでしょうか?
143 :
Now_loading...774KB :2006/09/22(金) 13:03:55 ID:50TIYTQv
var a = 1234.56789; trace(a >> 0); trace(Math.floor(a)); どちらも同じ整数になるけど、どっちが速いというか効率いいんですか? また、使い分けって必要なんですか?
144 :
Now_loading...774KB :2006/09/22(金) 13:10:03 ID:xBAhPAGI
斧ってなに?
>>143 効率は分からないけど、どちらが速いかは
簡単な実験スクリプトを作って計測すれば分かると思うよ。
演算子だけの方が参照辿らない分ほんのちょっと早いかな。 5000回ループくらいでほんの少し(平均3ミリ秒程)だけ差が出たよ。 使い分けは好みでどうぞ。 何千回もループするんじゃなきゃ、読みやすいMathクラス使えばいいんじゃない?
147 :
Now_loading...774KB :2006/09/22(金) 13:50:05 ID:RBZdOgAr
どうやってASを書けば 1つのスプライトともう1つのスプライトが ぶつかったら変数を0にするというのをできますか?
ニッポン語でOKアルヨ
コンビニに行ってスプライトを手に持ちながら ワッフルワッフルと叫べ
Paraflaか?
152 :
Now_loading...774KB :2006/09/25(月) 03:27:56 ID:rcuR3IgP
環境はFlashMX2004のPlayer6です。 ボールのMC(ballM)をドラッグしながら動かし、曲線のMC(curveM)との衝突判定を hitTest()で行おうとしています。 この際、curveMのballMに対するヒット領域は、その線上のみに限定したいのですが、 記述が分かりません。ballMをthisとして if (判定の条件文) {//this.hitTest(〜?) trace("-- hit"); } ならば、判定の条件文はどのようになるでしょうか?
153 :
Now_loading...774KB :2006/09/25(月) 03:54:39 ID:2svgs7fm
Player8 as2 テキストフィールドでHTMLタグを使用して、 ウィンドウをポップアップで表示したいのですが、どうしたらよいのでしょうか? textField.htmlText = "<a href='hoge.html'>windowsOpen</a>"; ↑これをポップアップにしたい よろしくお願いします。
>>152 var cnt:Number = 0;
this.onEnterFrame = function(){
if(line.hitTest(_xmouse,_ymouse,true)){
trace(cnt++ + "hit");
}
}
シェイプで判定するときマウスの座標とのhitTestはこんな感じ。
_xmouse,_y..を動いてるMCの座標(ヒットポイントを自分で設定)にすればいいかと。
>>153 str="<a href='
http://www.yahoo.co.jp target=_brank'>Yahoo</a>";
mymytxt.html=true;
mymytxt.htmlText=str;
とか。
155 :
153 :2006/09/25(月) 09:38:17 ID:Je2XxxlS
>>154 ありがとうございます。線上のみにヒット領域を指定できました。
しかし、ballMの座標1つと線の一致では、ballMの線に対する認識が厳密になり、
なかなかhitTestがtrueになりません。
そこでballMのどこかにあたった時にtrueにするため、ballMの半径を10として
this.onEnterFrame = function() {
for (a=-10; a<=10; a++) {
if (curveM.hitTest(ballM._x+a, ballM._y+a, true) == true) {
trace("-- hit--");
break;
}
}
としましたが、自分でもスマートな記述とは思えません(同時に上手くもいきません)。
別案がありましたらよろしく願います。
156 :
Now_loading...774KB :2006/09/25(月) 10:37:18 ID:OvN5a6DV
ソフトはFlashMX2004 ある点を中心にMCをくるくると衛星の様に周回させるため、MC(名称:eisei)の 中心を自由変形ツールで移動させて、以下のように書きましたが、動きません。 this.onEnterFrame = function() { this.eiseiM._rotation += 1;//1度ずつ移動 }; どうすればいいでしょうか?
>>156 eiseiMはeiseiなんじゃなかったの?
変数名をそのまま文字列にするのはどうしたらよいでしょうか? たとえば、MC0._xがあったら、trace("MC0._x")ができるようにしたいのですが。 変な質問ですみません;
160 :
156 :2006/09/26(火) 01:21:25 ID:HOQT1nAG
>>157 訂正します。 MC(名称:eisei) → MC(名称:eiseiM)
この件で、_rotationの使用は不可なのでしょうか?
>>158 パスがあってればtrace(MC0._x);で出力される
>>157 いまいちよくわからんが、MCの回転の中心は+の所だよ。
162 :
160 :2006/09/26(火) 11:25:41 ID:jhDeTGJo
>>158 trace結果に変数名出したいなら
hensu = new Object();
hensu.name = "hensu";
hensu.numberData = 55;
trace(hensu.name);
trace(hensu.numberData);
みたいに空のオブジェクトに突っ込んでしまうとか。
164 :
158 :2006/09/26(火) 15:59:57 ID:gxPdNcj7
デバッグ用の関数を作りたかったのです。 debugTrace(MC0._x)って入力すると MC0._x = 55 ってtrace結果が出力されるような関数です。
>>163 function debugTrace(varStr) {
trace(varStr+" = "+eval(varStr));
}
debugTrace("MC0._x")
つーか、デバッガ使え
166 :
158 :2006/09/26(火) 17:25:46 ID:gxPdNcj7
こんな場所で聞くべきことではないのですが、質問させてください。 ActionScriptが使えたら、どんな会社に入れどんな職業になることができるんでしょうか? 実際に求人情報などを調べてみたのですが、答えが曖昧な物ばかりでいまいち把握できません。 参考にさせて頂きたいので教えてもらえたら、と思います。 自分はスクリプト系を、ActionScriptを基軸に、Java・PHP デザイン系に、Photoshop,Fireworksが使え 経験については、チームで成し得たことなので自慢にはならないのですが Photoshop,Flashで作成した10秒程のFlashバナー Java,Flash,JavaScriptで作ったショッピングシステム Flash,PHP,DBを使った掲示板システム などがあり、学生です。 具体的ななりたい職業は決まっていません…。 就活はまだ2年以上後なので焦っているわけではないのですが 今は単純に、自分の今の出来ることでは、どんな職業になれる可能性があって さらにその幅を広げる為には、他にどんなことが出来たらいいのか?が知りたいと考えてます
つうか逆じゃないの? どんな職業に就きたいかがあって、そのために何をすべきかでしょ。 面接だってどんなことがやりたいのかを聞いて将来性を考えるし。
これが就職活動中とかならあかんかもしれんけど、別に今はいいんじゃないの あんただってIT関係なら知ってるだろ 「プログラマーになりたいからパソコン出来るようになるー」じゃなくて 「パソコン出来るからプログラマーになるー」の方が多いってことを
>>167 ASが使えたら、ASを使える人を募集している会社に入れ、ASを使って開発する職業になれます
それ以上でもそれ以下でもありません
つーか制作会社ならツールやスクリプトは使えて当たり前だからな。 技術があるのは当たり前で、 さらにこんなことが短時間で作成できますとか、 こういうノウハウがあるのでこれについては誰にも負けません。 とかそういう売りがないときついよ。 PHP、DBならセキュリティについては完璧です。とかね。
就職活動の前に技術を生かせるバイトしてみたら? 居心地がよければそのまま就職すればよいし。
173 :
Now_loading...774KB :2006/09/27(水) 18:41:51 ID:6eDg2hpm
ActionScript初心者です。 ムービークリップの中にムービークリップのX〜X^4と(、)、()が入っている状態。 実行?させるとアイコンが一列に並ぶ。canvas_mcにドラッグさせることができる。 というのを作ってます。 カッコなんですが、並ばせる時は()だけにして、これをドラッグさせるとcanvas_mcには()ではなく、(と)が追加させられるようにしたいのです。 どなたかアドバイスなど、お願いします。
何言ってるのか解らないのは俺だけだろうか
gotoAndPlayで指定したフレームのいずれかにランダムで飛ぶことができるボタン用ASをお願いします
177 :
AS使い :2006/09/27(水) 19:53:56 ID:MwJYt7oi
>>167 ASなんて誰でも出来るよ。
そんな誰でも出来る物を売りにするのは大間違い。
最初から独立するので無い限り、職業は「会社員」だ
技術以前に「会社員」として落とされるやつのほうが多いよ
「素人にしては技術が高いけど暗くて性格悪そうな奴」より「真面目なのに明るくて楽しい奴」を取ることの方が多い
というかそれは2chじゃなくて就職課で聞け。
>>171 どっちかというとそれは就職のアドバイスというより転職のほうのだな
>>173 言ってることはヒンデゥー語の三段活用並にわからないが
なんとなくここのメニューみたいにしたいのかと思った
ttp://www.kazsh.com/ >>176 on (press) {
a = 11;//指定したフレームA
b = 21;//指定したフレームB
this.gotoAndPlay(Math.floor(Math.random()*2) ? a : b);
}
>>167 >実際に求人情報などを調べてみたのですが、答えが曖昧な物ばかりでいまいち把握できません。
どういう答えだったの?
webデザイナーかプログラマじゃない?
2値で3項演算子を使うのならMath.random() < 0.5 ? 1 : -1とか
>>167 後生ですから、続きはマ板でやってください
色々言いたい事があるでしょうけど、消えてください
181 :
AS使い :2006/09/28(木) 18:20:41 ID:NxiGoNiA
>>179 だよね。
どう考えても普通そっちだよね。
182 :
Now_loading...774KB :2006/09/29(金) 01:00:47 ID:0VK5OU/0
cgiにflash上から、データを送信する際に、
以下の命令で、情報はcgiに受け渡されるのですが、
loadVariables("mail.cgi");
これを、別ドメインにあるcgiに情報を送信しようとすると、
loadVariables("
https:// 〜");
ドメイン間で、情報がうけわたらないのか?
なにかが原因で、情報が受け渡しできないようです。
どなたか解決方法をお教えください。
>>182 セキュリティー上ドメイン間の通信はできねーからな。
7以降ならcrossdomain.xml置けばできるけど6はシラネー
6以下だとサーバに受け渡し用のCGI作ってやるしかないんでは CGI串みたいなもんだから、セキュリティホールになりかねんけどな
185 :
Now_loading...774KB :2006/09/29(金) 15:52:45 ID:UbulYnpy
5はセキュリティ自体なかったようなキガス ちなみにプレイヤー側のセキュリティだからあくまでもユーザーがインスコしてるプレイヤーのことな。
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| | キチガイ増殖中| | | | (・∀・) ♥ | ,. . _ |_______| --' 、  ̄ ̄ヽー- 、 | | ヽ ̄7 , , \ 、 「 ̄ 7 | | ヽ / /_ /ハ |ヽ、\ V ./ | | i il/ ヽl \ヽ. V ,. -{-、 __ .| ii i! o o | il | { Y/ l il |、 ""Д "" | li | `t-く ヽN ` --- <リiレ' | | `ー-- 、 /ギ子♥ヽ `丶、 | |  ̄ヽ ノ >-' ! | | ,.ィ`=== r'^ヽ、_,/- 、 | | , '" // !'~`V-─ 、 ) | | < _,/ / / /i \ (_ノ i_j /ヽ ' / / ! ,> /_ > 、 」__/ _」, ィ'´ 「 :::`ー':::::::::::::::::::::::::::::ヽこノ:::
シューティングゲームを作ろうと思うのですが、敵を、たとえば5発打ったとき、 死ぬ というような設定にしたいのですが軽い、かつわかりやすいASが思い浮かびません。 CACAO99%やるから例とかヒントでいいのでくださいな (´・ω・)っ[cacao999%]
フレーム1 撃たれた! フレーム2 痛てて! フレーム3 あ、血が出てる! フレーム4 ヤバイ! フレーム5 意識が遠のいてきた・・・ フレーム6 シボン って作って、撃たれるごとにフレームを1つ進めればよい。
>>188 自分ではどういう方法が良いと思うの?
まったく思いつきませんでは、ゲームなんて作れないよ。
一応オブジェクト1(照準クリック時)とオブジェクト2(敵)がふれるごとに 変数に代入した5の数字を1ずつへらして行って0になったらフレームを進めて 死亡と見せようかと思ったんだけどほかにどんな方法があるかなーと。 ちなみにシューティングって言っても斑鳩とかそんな感じの弾幕じゃなくて ゲーセンとかによくおいてあるタイムクライシスみたいなそんな感じのガンシューティング
質問です。 MC_aの中にボタンインスタンスBTNがあった場合 MC_a.onPress = function(){...} MC_a.BTN.onPress = function(){...} とした場合ってやっぱり同時に動かないでしょうか?
>>192 なぜボタンを入れ子する必要があるのか申してみ
ごめん。。。自分でも良くわからない。 気が付いたらそうなってた。でも見直すのめんどいからそのままいこうと思ったら 動かなくてイライラ。だから結果としては動かないです。 MC_a.onPress = function(){...} こっちの方が優先されてボタンの方はスルーされます。
196 :
Now_loading...774KB :2006/10/02(月) 15:20:57 ID:KYlLPHMi
FlashMX2004とPlayer6とXMLを使って、対象テキストの文頭に読み込み 用変数を使わずにテキストを読み込むASを書いています。 (つまり、tName=文章・・・・ の tName= を使わない) 読み込みとtrace表示は出来たのですが、テキスト中の改行(\nまたは\r)の 除去とダイナミックテキストへの表示ができず困っています。手順は、 on (release) {my_xml.load(tName+".txt"); } //tNameというテキストを指定 my_xml.onLoad = function(s) {//my_xmlがロードされたとき if (s) { trace(my_xml); rep1 = my_xml.split("\n");//改行で分割して配列rep1に代入 for (i=0; i<rep1.length; i++) { tmp1 += rep1[i]; if (i%2 == 1) { tmp1 += ""; } } txtData1 = tmp1;//ダイナミックテキストtxtData1へ表示 } }; 以上のASでは、traceウインドウには表示されますが、\nを\rに変えても 不要な改行が除去できず、txtData1にも出ません。 どうすべきでしょうか?
197 :
AS使い :2006/10/02(月) 17:59:17 ID:hTo4RtzC
>>196 ちょっと改造してみた
System.useCodepage = true;
my_xml = new XML();
my_xml.onData = function(s) {//←そういうときはonDataがいい気がする
if (s) {
do {
s = s.split("\r").join("\n").split("\n\n").join("\n");
} while (s.indexOf("\n\n") != -1);//改行を"\n"に統一、汎用的に使うには問題あり
var rep1 = s.split("\n");
var tmp1 = new String();
for (var i = 0; i<rep1.length; i++) {
tmp1 += rep1[i];
}
txtData1.text = tmp1;//ダイナミックテキストtxtData1へ表示(.textを追加)
}
};
さらにちょっと変えてみた
System.useCodepage = true;
my_xml = new XML();
my_xml.onData = function(s) {
if (s) {
txtData1.text = s.split("\r").join("\n").split("\n").join("");
}
};
198 :
196 :2006/10/03(火) 04:59:04 ID:xbVJeimq
>>197 ありがとうございます。しかしながら、対象テキストの表示が出来ません。
if文の実行を確認するため
txtData1.text = tmp1;
trace("s true");
txtData1.text = s.split("\r").join("\n").split("\n").join("");
trace("s true");
と、trace("s true"); を入れましたが、両者とも on (release) {my_xml.load(tName+".txt"); }
を実行しても「s true」は表示されません。 アドバイス願います。
ちなみに、テストで使ったテキストは以下のようなものです(t1.txt サイズ:153バイト)
「ザラブ星人」
突然、東京が放射能を帯びた死の霧に覆われた。
原因を調査していた科学特捜隊は
「地球人と兄弟になりに来た」という謎の宇宙人と遭遇する。
>>198 trace出力がでないということはどういう事か考えてみそ
201 :
AS使い :2006/10/03(火) 23:09:03 ID:b5/ez/9y
my_xml.onData = function(s) {//直後に trace(s);//入れて 出力画面にundefinedって出たら読み込み失敗してる 何も出なかったら、そもそも読み込もうともしていない
フィルタレベルがアレなんじゃないか?
Flashのフィルタレベルって何スか? 先輩!
F2で出力パネル出して左上の変なアイコンクリックして フィルタレベルがなしになってたら詳細に戻せってこと
レスさんきゅうです。
>>201 この通りだと、traceウインドウに不要な改行が除去されずに表示されますが、
//trace(s) と記述をコメント化すると(無効化すると)表示されません。
つまり、sそのものが対象テキストなのでしょうか?
206 :
AS使い :2006/10/04(水) 00:11:44 ID:Mi6XQj1U
>>205 onDataの場合はそう。
System.useCodepage = true;
my_xml = new XML();
my_xml.onData = function(s) {
trace(s.split("\r").join("\n").split("\n").join(""));
};
では出ない?
>>206 ありがとうございます。しかし、 trace(s.split("\r").join("\n").split("\n").join(""));
では一行にまとまってしまうため、 s.split("\n").join(""); に変更しました。これで
trace表示、ダイナミックテキスト表示共にOKになりました。
以下は今回のまとめです。
ボタンアクション
on (release) {
my_xml.load(tName+".txt");
}
フレームアクション
System.useCodepage = true;
my_xml = new XML();
my_xml.onData = function(s) {
tmp1 = s.split("\n").join("");
trace(tmp1);
txtData1 = tmp1;//ダイナミックテキストtxtData1に表示
};
attachMovie()したMCの識別子ってどうやって取るんでしょうか? hoge_mc = _root.attachMovie("Actor", "Actor"+id, id); で生成したhoge_mcから指定した識別子"Actor"を取得したいんです。 "Actor"+idの方はhoge_mc._nameで取れたんですが。
そのActorを変数なり、配列なりに入れといて それを見ればいいんじゃない? mcName = "Actor"; hoge_mc = _root.attachMovie(mcName, mcName+id, id);
>>209 シューティングゲーム作ってるんですが
弾や敵機を配列に格納して管理して、メイン処理の書かれたMCの
onClipEvent (enterFrame)内のfor文で当たり判定などのイベントを
処理してます。
現状各MCのonEnterFrame()内で行っている処理(敵機の弾発射とか)
もメイン処理のfor文内でMCの種類ごとに判別して処理を実行したいんです。
>>210 ですね。
mcName = "Actor";
hoge_array[i] = _root.attachMovie(mcName, mcName+id, id);
hoge_array[i].mcName = mcName;
みたいなのも考えたんですが。MCのプロパティにあらかじめ用意されてるなら
それ使えばいいよなぁとか考えてたんです。
どのくらいのシューティングかわかんないけど 処理速度が気になるなら、文字列照合よりか素直にID数値を用意したほうがいいような気がしました。
なるほどID数値ですか。確かに文字列比較より数値比較の方が早そうですね。 ただ今回は速度というよりも処理を一箇所に集中して管理したいという感じなんで。 でも、MCの識別子がプロパティとかで取得できないなら別に文字列にこだわる必要も無いですね。
携帯用の待受Flashで時計を作っているんですが 色々調べても、どうしても数字の変化に動きを付ける事ができません; もしよろしければ解答をお願い致します。 現状は、シーンに数字のMCを置き、それに表示をさせているだけです。 他にも必要な追記がありましたら、ご指摘お願い致します;
>>214 >数字の変化に動きを付ける事ができません
ってどんな変化にしたいの?
>数字のMCを置き、それに表示をさせているだけです
そのMCの中に0から9までの数字がフレームごとに書いてあるのかな?
で、そのMCが4つなり、6つなり配置されてるのかな?
それで、どんなスクリプト書いたの?
216 :
214 :2006/10/06(金) 21:07:56 ID:PJCFVMPp
>>215 さん
亀レス大変申し訳ないです;
反応ありがとうございます。
数字の変化に関しては
例えば"1→2"と変わる際に、ジャンプしたり、フェードアウト→インしたり出来れば、応用で色々出来るのではないかとふんでいます。
数字のMCには"0〜9"までのすうじがフレーム毎に配置されています。
そのMCをシーンに"hour10"や"sec1"等のインスタンス名を付けて配置しています。
217 :
214 :2006/10/06(金) 21:10:57 ID:PJCFVMPp
スクリプトは以下の通りです ■シーン1フレーム目 //時間の取得 hour = fscommand2("GetTimeHours"); //時間表示処理 if (length(hour) == 1) { hour1 = substring(hour, 1, 1); } else { hour1 = substring(hour, 2, 1); hour10 = substring(hour, 1, 1); } //時間表示処理2 tellTarget("hour1"){ gotoAndPlay( _level0.hour1+1 ); } tellTarget("hour10"){ gotoAndPlay( _level0.hour10+1 ); } ■シーン2フレーム目 gotoAndPlay(1); ■上記のASの時 シーンに配置されている数字MCの名前は2つで hour10 と hour1 のインスタンス名を付けています。 また、その数字MC内の0〜9の数字には stop(); をかけています。 以上の説明で把握して頂けるか心配ですが とりあえずはこんな感じです、いかがでしょう?;
ありがと! でもうごかね(´・ω・`)半角にしてんのに・・・
>>220 エディタかFlashで全角空白を空文字に変換すれば動くよ
222 :
Now_loading...774KB :2006/10/07(土) 23:15:07 ID:ycQ74PuS
FLASHMX MACOS9.2.2です。 メインタイムラインから一つ下の階層にattachMovieClipしたいんですができません。 ムービークリップAの中のムービークリップBに、ムービークリップhogeをattachしたいのですが、 _root.A.B.attachMovieClip("li_hoge","hoge", ); でできませんでした。 またそれをメインタイムラインから削除したいのですが、 _root.A.B.removeMovieClip("hoge");これもできなかったです。 なにがまずいんでしょう?
223 :
AS使い :2006/10/07(土) 23:22:13 ID:aqiHrlGe
>>222 >_root.A.B.attachMovieClip("li_hoge","hoge", );
深度が無いな
>またそれをメインタイムラインから削除したいのですが、
>_root.A.B.removeMovieClip("hoge");
_root.A.B.getDepth()
深度+だよね?-だったら出来ないよ
loadmovieでSWFを読み込んでくるとき、 元のSWFのディレクトリのなかに「01」という名前のディレクトリを作り、 そのなかの「yomikomi.swf」を読み込んでくる場合、 loadMovie("01/yomikomi.swf"); としてみたのですが、シンタックスエラーがでてしまいます。 同じ階層に置いてそのまま指定すれば読み込みはできるんですが、 ファイルが増えていくのも踏まえてディレクトリに分けていたいんですが 可能でしょうか?
225 :
Now_loading...774KB :2006/10/08(日) 11:01:15 ID:0r1s1FCO
質問です。 Videoオブジェクトを、AS2.0で作ることはできないでしょうか? やはり、最初に貼り付けないといけませんか?
電光掲示板のように外部txtを横スクロールで流すのをやろうとしてるのですが カクカク動くので滑らかに動かすにはどうしたらいいのでしょうか… onClipEvent (load) { this.loadVariables("msg.txt"); System.useCodepage = true; //scrollspeed scr = 1; //表示横幅 readwidth = 300; function textScrl(ts) { if (txtm._x<=txtleng*-7.5) { txtm._x = readwidth; } else { txtm._x -= ts; } } } onClipEvent (data) { gotoAndStop(2); txtleng = textdata.length; textdata = textdata.slice(1, txtleng-1); intervalID = setInterval(textScrl, 10, scr); }
ちょっとずつ動かす・・・
サルでもわかるようにDisplacementMapFilterを教えてください。 もしくは解説してるサイトはないでしょうか。 マップ画像を画像に反映させられたのですが、 画像を動かすと最初に反映させたままの画像が動くだけでした。 都度マップ画像を画像に反映させるにはどうしたらいいんでしょうか。
>>224 loadMovieの引数ぐらいチェックしる。ディレクトリ構成は可能。
>>225 意味不明だが、普通にASで外部のflvファイルを再生可能。
>>228 サルはASを使えないのでサルでも分かる説明は成り立ちません
LiveDocで分からないようなら諦めろ
231 :
Now_loading...774KB :2006/10/09(月) 09:52:10 ID:bVsm51Uj
232 :
Now_loading...774KB :2006/10/09(月) 22:35:32 ID:hHRDsz4m
アクションスクリプトでphpの_requierみたいな、 ほかの場所にあるプログラムをそっくりそのまま 別の場所に呼び出す命令ってないしょうか? あるのであれば、どのように記述すればよいのでしょうか?
233 :
Now_loading...774KB :2006/10/10(火) 12:56:58 ID:MVJS9xuX
>>233 swfファイルはmovies_arrayだよね?
link_arrayってなに?
a_mcをonReleaseとかするとgetURLで飛ぶの?
swfClick(){
getURL(linkURL, "_blank");
}
a_mc.onRelease = swfClick;
ってこと?
237 :
233 :2006/10/10(火) 18:53:26 ID:MVJS9xuX
>>234 はい、link_arrayのところで、読み込んだswfのリンク先を指定しています。
238 :
AS使い :2006/10/10(火) 20:36:06 ID:sp7m0sji
ActionScript向けの巨大整数ライブラリってどこかにありませんかね。 公開鍵暗号の暗号部分だけをFlashで実装してみたいのですが。
241 :
239 :2006/10/11(水) 07:50:55 ID:/KK0Hpij
>>240 基本的には正にそれ、です。
計算だけJavaScriptでやらせるとか、手はいくらかあるものの、
ActionScriptネイティブの実装があればなーと思ったので。
>>241 お前、JavaScriptとASの違いって知ってる?
JavaScriptもActionScriptも同じECMA262だから ほぼ使いまわし出来ると思うけど
>>242 良く分からないので、分かりやすく教えてください
JavaScriptもASも似たようなもんで、もしかしたらコピペしてそのまま使えそうな勢いなのに、
>>241 がそのJavaScriptではなくてASで書かれたものがあればなんて言うから、
じゃJavaScriptとASの違いって何だ?っていう皮肉った言い方だよ。きっと。
>>239-242 をたとえるとだな
7×8がわからないのですが
8の段ならここにあったよ
それです、8×7を代入するとか手はいくつかあるものの7×8の計算方法があればなーって思ったので
お前、掛け算わかってる?
これくらいおかしい会話だ
248 :
Now_loading...774KB :2006/10/12(木) 08:37:38 ID:c/IOU2kt
二つのムービークリップAとBがあり AとBは滑らかにつながっていて、かつそれぞれは単体でもループしています。 つまり Aの最初と最後のフレームは同じ絵で、 Bの最初と最後のフレームも同じ絵で、 Aの最後のフレームとBの最初のフレームも同じ絵、です。 それでまず、Aをループして再生します。 Aの再生中、マウスでボタンなりをクリックされた場合に、 Aの終わりまでそのまま再生してから、Bに滑らかに移るようにしたいです。 gotoAndPlayとかだと、アクションのあった瞬間にBに飛んでしまうので 動きが滑らかにつながりません。 なので、Aの再生中にアクションがあったらAの最後まで再生した後に Bに移る方法を教えてください。 環境は8のBasicです。お願いします。
>滑らかに がよくわからんが、フェードしたいなら_alphaを使えばできる
250 :
Now_loading...774KB :2006/10/12(木) 10:40:08 ID:c/IOU2kt
>>249 ご回答ありがとうございます。ですが
_alphaとかを使ってフェードアウト・フェードインしたいのではないです。
質問内容が伝わりにくいかもしれませんが、
とにかく、
Aの再生中にボタンを押されたらBに飛びたい。
だけどAの途中でボタンが押された瞬間にBに切り替わってしまうのではなくて
Aの終わりまでちゃんと再生した後にBに移動するようにしたい。
ということが要点です。
お願いします。
ボタンが押されたらフラグたてて Aの再生終了時にフラグをチェックして立ってたらBを再生する で済む話じゃないの?
>>250 1.ボタンが押された際にフラグを立てる
2.Aの最終フレームでフラグによる判定を行い
Bに移行するかループするかを決定する
253 :
Now_loading...774KB :2006/10/12(木) 11:48:02 ID:c/IOU2kt
>>251 >>252 あぁ、そうですね・・・
脳が完全に死んでるようです。
ありがとうございました。
Flash超基本的な質問スレから来ました
以下ほぼコピペ。
よくあるPHPとFlashでのデータの相互通信をしてるんだけど
それをセキュアにしたくて、HTTPSで送受信したいんだけど
***.sendAndLoad( "
https://www/test/test.php ", ***, "POST" );
※crossdomain.xmlを置いてドメイン間の通信を許可してます。
これで外部プログラムとのデータの送受信に関しては、セキィリティが確保されるのかな?
それとも、そもそもFlashでセキュアなんて
.swf内部のphpに送信するデータの変数名とかが簡単に解析される以上、不可能なんだろうか
業務でAS使ってる人に教えて欲しい。
Flashでセキュアなログインシステムなんかを作る時は外部スクリプトとの通信はどうしてるの?
普通のHTTPS通信と何も変わらんよ。 それ以上でもそれ以下でもない。
何をセキュアにしたいかによる データの転送なのか、データそのものなのか、セッションなのか データの転送ならhttpsで十分と言うか、それ以上を求めるなら物理的な手法に走るしかない これはもうFlash云々ではなく、IPのレベル データそのものを守りたいのであれば、保護したいデータをサーバサイドで完結させればよい そもそもFlashをプレゼンテーション層以下で使おうとする発想が危険なのでやめとけ セッションはFlash云々というよりもPHP側の問題 Flashはちゃんとcookieなり認証チケットを受け渡すことだけを考える ただ、Flashの認証は乗っ取られやすいから、できればFlashの外側で認証を取り、Flashはその中のコンテンツとして使うのがベター ちなみに漏れはFlashにセキュリティは任せない あくまでもWebサイトとして基本認証なりWindows認証なりかませて、ブラウザのセッションとして確保する Flashはコンテンツとして動作し、ログインIDなんかはセッションを元にサーバ側で解決してもらう どっちにしてもセキュリティ設計は要求レベルに合わせてしっかりやるべき 特にインターネットに公開を考えているなら、有料のセキュリティ対応コンポーネントとかも検討しろ つかFlexじゃだめなのかよって、PHPが必須なのかな
指定のswfを非表示にするスクリプト教えてください。 どれだけくぐっても見つかりません。
>>257 _visible = false;
ヘルプを「非表示」で検索すれば山ほど出てくるぞ
>>259 そんなのじゃないと言われてもな。
ASでじゃないの?
>>259 は、リンク先のゲームで特定のアイテムを消して
悪用したいだけの厨なので無視してください。
どうやって他人のゲームを書き換えるつもりなんだ?
>>256 PasswordやIDをクライアント側から送って鯖PHPで受け取って
チェック後、判定結果をASに送信してNextpageってのを考えてるんだけど
(その後のページからはIDなどはセッション管理)
データの転送はLoadVarsでHTTPS通信が可能なのかどうかが聞きたかった、サンクス
データそのものを守りたい訳じゃない、漏えい厳禁のデータは全て鯖管理してる
不安に思ったのが、SWFがFlasmとかでクラックされて
IDやPasswordを格納する変数名と送信先PHP名が抜き出されて
そのPHPに直接、抜き出した変数名とランダム文字列でアタックされると
HTTPS関係ないな・・・と思って。
ってこれはFlashでなくHTTP+PHPで作ったログインシステムでも言えることなのかな
[FLASH]ID+Pass入力→[PHP]ログイン許可をASに→
[PHP]ID+Passをsessionに→[FLASH]認証チケット送信→[PHP]チケットを判定→
[PHP]sessionを使い個人情報をDBから引き出しASに飛ばす→[FLASH]個人情報表示
みたいな流れのシステムを作るとしたら「→」の部分をSSL通信にすれば取り合えず安全で
後はFlashの「認証チケット送信」部分が手薄だからFlashの外側でしたほうがいいってことだよね?
「外側でする」という部分の方法を詳しく聞きたいんだけど教えてもらえないだろうか
mcを毎回適当な時間に出てくるように設定しようと思って これ↓をフレームasとして置いたのですが、他のflaではこれと全く同じのを 入れても正常に動いてるのに今回はなぜかブラウザが何度もリロードされます。 (シーン1のナウローディングまでもどってるようなかんじ)なぜかわかるかた教えてください... //-- ムービーの停止 stop(); //-- 制限時間が来たら呼ばれる関数 function callback() { play(); clearInterval(interval); } //-- 間隔の時間のセット nextsec = Math.floor(Math.random()*20)+1; interval = setInterval(callback, nextsec * 1000);
266 :
Now_loading...774KB :2006/10/16(月) 23:10:59 ID:z+ogNLz7
スーパーマリオブラザーズのようなアクションゲームで、 ブロックに対して当たり判定 (左右は当たるとそれ以上行けなくなり、上は乗れ、下は当たるとジャンプが途中で終わる) というものを作る場合、 どのような、ブログラミングが考えられるでしょうか?
>>266 移動先に壁が無ければ移動する。
移動先に壁が有らば移動は行わない。
268 :
Now_loading...774KB :2006/10/16(月) 23:52:29 ID:z+ogNLz7
>>267 でも、どちらか逆方向には移動してやらないといけないわけだから、
左方向と右方向別々に管理してやればいいのか・・・。
269 :
Now_loading...774KB :2006/10/16(月) 23:58:22 ID:z+ogNLz7
>>267 あと、その「移動を行わない」が起こる条件は
どうなった時に起こすのが一番いいのでしょうか?
ヒットテストを使うと、ブロックにキャラが埋まることがあるんですが・・・。
というか、それを考えるのがプログラミングの作業の一環 それをここで丸投げするなら業者にカネ払って全部作ってもらえ
>>266 そこまで漠然としてると答えも漠然としちゃうから
ゲーム作成の本でも読んでから出直した方が良いと思われ
以下のように別のインスタンスを別扱いで ハッシュに格納したいと考えています。 何か方法はないでしょうか? var a:c = new c(1, 2, "3"); var b:c = new c(1, 2, "3"); var h:Object = new Object(); h[a] = "123"; h[b] = "456";// 別のオブジェクトは別で格納したい。 trace(h[a]);// 456 trace(h[b]);// 456 [c.as] class c { var _x:Number; var _y:Number; var _z:String; function c(x:Number, y:Number, z:String){ _x = x; _y = y; _z = z; } }
274 :
Now_loading...774KB :2006/10/17(火) 23:23:43 ID:JSdZE/nm
ソフト:FlashMX2004です。 リンケージされた棒状のMC(evBar)を、ステージ上のXY軸(xy0)に任意の高さで X方向に並べて出現させるASを書いています。今、試しにボタンアクションのon (release) で2つ並べるため、高さを gap1 = 50,gap2 = 160、底の位置を v1 = 50,v2 = -10 と定義しています。 for (eid=1; eid<3; eid++) {//2つ出現させる newBar = "evBar"+eid;//新しいのevBarの名前 prop = {_x:eid*30, _y:["v"+eid], _height:["gap"+eid]};//X方向の位置と高さを指定 trace("底の位置= "+this["v"+eid]); trace("高さ= "+this["gap"+eid]); _root.xy0.grobalToLocal(prop); _root.xy0.attachMovie("evBar", newBar, eid, prop); } このfor文では、2つevBar1,evBar2が指定したXの位置に並んで出現しますが、 Y方向の位置(底の位置)と高さ(_height)が希望通りになりません。 アドバイス願います。
>>273 意味がよくわからんのだけど、
var h:Object = new Object();
h.a = new c(1, 2, "3");
h.b = new c(4, 5, "6");
trace(h.a._x)
trace(h.b._x)
こんな?
>>274 他と一緒で
prop = {_x:eid*30, _y:this["v"+eid], _height:this["gap"+eid]};
にすればいけるんじゃない?
>>275 すみません。もっと詳しくやりたいことを書きます。
Arrayに3つのオブジェクトを入れます。
arr:Array = new Array();
arr.add(o1);
arr.add(o2);
arr.add(o3);
その後、このarrの中にオブジェクトo1は入っているのか、
また、入っているとすればarrの何番目に入っているのかを知りたいのです。
思い付いているやり方としては、
function indexOf(o:Object):Number{
for(i:Number = 0; i < arr.length; i++){
if(arr[i] === o) return i;
}
return undefined;
}
といったものを考えています(o1なら戻り値は0)。ですが位置を取るたびに全探索するのは重そうです。
そこで、位置を格納するハッシュ配列を考え、オブジェクト自身をハッシュのkey、 位置をハッシュのvalueとして以下のようにやればうまくいくのではないかと考えました。 arr:Array = new Array(); hash:Object = new Object(); arr.add(o1); hash[o1] = arr.length - 1; arr.add(o2); hash[o2] = arr.length - 1; arr.add(o3); hash[o3] = arr.length - 1; function indexOf(o1:Object):Number{ return hash[o1]; } いま適当に hash[o1] とか書いてますが、 ここでオブジェクトと値を1対1で対応付けられるような方法を探しています。 よろしくおねがいします。
>>278 >オブジェクト自身をハッシュのkey
これはできないから同名のプロパティ(キー値)にすればいいんじゃない?
オブジェクトの方にも自分のインスタンス名なりキー値なりを返す仕組みいるけど。
arr:Array = new Array();
hash:Object = new Object();
arr.add(o1);
hash.o1 = arr.length - 1;
function indexOf(o1:String):Number{
return (hash[o1])? hash[o1]: Number.NaN;
}
あと、
var o1 = new c()
hash[o1] = "1"
って書き方は、クラスの既定の戻り値(そのまんまだと[object object]とかの「文字列」)
の名前のキー値だと思われるんじゃないかな?
var o1 = new c()
var h=new Object()
h[o1]=1
trace(h[o1])
trace(h["[object Object]"])
>>279 解答ありがとうございます。
オブジェクトのキー値を算出するのは良さそうな感じです。
厳密に算出するとそれはそれで重くなりそうなので、
思いっきりサボってMath.random()で固有のキー値、てのもアリかもと思いました。
>var o1 = new c()
>hash[o1] = "1"
>って書き方は、クラスの既定の戻り値(そのまんまだと[object object]とかの「文字列」)
>の名前のキー値だと思われるんじゃないかな?
これはその通りです…。うまく伝える書き方がわからず便宜上そう書いてしまいました。
察してくださってありがとうございます。
281 :
274 :2006/10/18(水) 01:21:10 ID:qkHL49kj
>>276 レスさんきゅうです。traceを若干変えて
trace("底の位置= "+prop._y);
trace("高さ= "+prop._height);
ご指摘の
prop = {_x:eid*30, _y:this["v"+eid], _height:this["gap"+eid]};
とすると、trace()は
底の位置= 50
高さ= 50
底の位置1= -10
高さ= 160
ですが、evBar1,evBar2は現れません。一方、heightからthisを消して
prop = {_x:eid*30, _y:this["v"+eid], _height:["gap"+eid]};
の場合、trace()は
底の位置1= 50
高さ= gap1
底の位置1= -10
高さ= gap2
となるものの指定したYの位置にevBar1,evBar2は現れます。
一長一短の状態です。問題点はどこでしょうか?
なお、evBarの基準点は上端(-Y方向)に置いています。
282 :
274 :2006/10/18(水) 01:25:20 ID:qkHL49kj
底の位置1= 50 と 底の位置= 50 は同じです。 「1」は無視して下さい。
>>280 8ProならDataSet コンポーネントあたりを読んでみると良いかも
>>281 trace(this);でthisが何を指し示しているか確認してみる
284 :
274&281 :2006/10/18(水) 11:18:35 ID:RRKhBgAU
>>283 (ヘルプを見ても)やはり分かりません。thisの情報の取得の他、型のチェックのため
trace("Soko, Takasa= "+typeof (this["v"+eid])+", "+typeof (this["gap"+eid]));
prop = {_x:eid*30, _y:this["v"+eid], _height:["gap"+eid]};
trace("This= "+this);
と書いたところ
Soko, Takasa= number, number
This= _level0
となりました。propには数値情報は渡されているハズなのですが、_heightのthisを
上の様に消さない限りevBar1,evBar2は現れません。
そもそもattachMovie()では大きさ(タテ・ヨコ)の指定は出来ないのでしょうか?
ちなみにPlayer6です。
_root.v1や_root.gap1の値は?
>>286 []は配列リラテル。オブジェクトの直後で使うと配列アクセス。
擬似配列で管理してるってことは携帯用のFlashでも作っているのかな?
grobalToLocalメソッドはちょっとググっても出て来んね。
_heightプロパティと_widthプロパティにはどうやらおかしな仕様があるみたいで、
私はそれを使わずに、MCの高さと幅ををあらかじめ100って決めておいて_xscaleと_yscaleで引き伸ばしてる。
この例の場合、attachMovieメソッドの第四引数に指定するオブジェクトで即座に_htight指定するとMCが表示されなくなるっぽい。
どうしても_height使わなきゃいけないのなら少し考えてみた。
var yArray = new Array(50, -10),heightArray = new Array(50, 160);
for (var i = 0; i<2; i++) _root.xy0.attachMovie("evBar", "evBar"+i, i, {_x:i*30, _y:yArray[i]})._height = heightArray[i];
ただ、これだとちょっとトリッキー目で拡張性が悪いね。
attachMovieの戻り値は配置したMCの参照だから、それを取っておいて次に_heightプロパティに代入するっていうのを短くしたつもり。
289 :
288 :2006/10/18(水) 15:41:21 ID:IY27kesb
あ、1スタートが0スタートになってますね…
290 :
214 :2006/10/18(水) 15:45:16 ID:dI0kMP4P
>>214 >>216 >>217 ↑この時以来もまた色々と漁ってみましたが、一向にわからぬまま;
今一度皆さんのご協力を募らせて下さい;
お願い致します
>>287 リンク先が見えないです。
>>288 擬似配列? う〜ん、設定したつもりはありませんが。this["v"+eid]の[]を
指しているのでしょうか? とりあえず、_xscaleと_yscaleを使ってみます。
ちなみに携帯用ではなく、PC用です。
外部ファイル(画像)をflashに取り込む場合、 flashからファイルの存在の有無を調べる方法はあるのでしょうか。 具体的に言いますと1.jpg 2.jpg 3.jpg など枚数が不確定の中、 画像が終了した時の処理を作りたいのですが… 良い方法を知っている方いらっしゃいますか
phpかませるか、エラー拾うかどっちかかな?
>>294 即レスありがとうございます。(^^
phpの方はわかりましたが、
エラーを拾うのはどう言う処理をおこなっているのでしょうか。
>>294 解決しました。
読み込み時に-1がかえって来ると言う事ですね。
ありがとうございました。
AS3.0で文字列から関数を呼び出すには、 ExternalInterfaceを使うしかないという理解であってます?
初歩的な質問ですみません。 クリックすると他のページに飛ばせたいのですが on(press){ 以降何と記述すればよいのでしょうか?
あいうえお
妻とはセックスレス、セフレとは毎週逢っているのですが 最近渡しの愚息が勃たず悩んでます、 スクリプトでMCの傾斜ってできますか?
302 :
Now_loading...774KB :2006/10/22(日) 01:02:28 ID:AJJs/WCZ
質問です。 外部画像を読み込み、その画像のサイズに応じて ムービー(ムービークリップではなく、ムービーです)のサイズを変えることは 可能でしょうか? また上記が可能だったとして、HTMLにFLASHを貼るタグを書く際に サイズの指定をしなければ外部画像のサイズで貼り付けることが可能なのでしょうか? よろしくお願いいたします。
正規表現を使いたいのでRegExpを使ってスクリプトを組んでみたのですが クラス内でエラーが多発して値がパブリッシュ出来ません。 *エラー名 RegExp.as: 行 172 'invStr' という名前のメソッドはありません。 thischar += "0123456789".invStr (); RegExp.as: 行 793 ActionScript 2.0 のクラスのスクリプトは、 クラスまたはインターフェイスコンストラクトのみを定義することができます。 String.prototype.old_split = String.prototype.split; などの、invStrメソッドのエラーとPrototypeのエラーが14件出ます。 猶、実際に正規表現を行う.fla .swfの同ディレクトリにRegExp.asを置いています。 エラーが出るのでアクセスには成功してるんですが・・・どこで間違っているんでしょうか? スクリプトは、ググって引っかかったものを軒並みに試していますが反応は同じでした。 run_button.onRelease = function() { var regexp = new RegExp("^([\\w\\-\\.-]+)@(([\\w\\-]{2,}\\.)+[\\w\\-]*)$","gim"); var ss = regexp.exec(box1.text);//マッチした部分を摘出 if( ss ) { box2.text = "valid email"; } else { box2.text = "no good"; } }
>>302 最初っからJSで画像サイズ取得してタグ書かせたほうが速いんじゃね?
>>303 RegExpが正式サポートされるのはAS3.0、FLASH9から。
個別のASなら元AS晒すといいと思うよ
>>302 ムービーって動画のこと?flvならいろいろできるけど。
htmlのサイズ指定ははパブリッシュでswf本体をどうするかの問題でそ
>>303 まず、普通にJavaScriptでエラー無く動くことを確認。連携はそれから
306 :
Now_loading...774KB :2006/10/22(日) 11:03:41 ID:YMeTQyqf
308 :
Now_loading...774KB :2006/10/22(日) 14:16:09 ID:PbWelJKH
ボタンを押すとMediaPlaybackに外部FLVファイルを読み込むにはどうしたらよいのでしょうか? MediaPlaybackのインスタンスにscreenと名前をつけて ボタンに on (press) { loadMovie("1.flv",screen); } 書いたんだけど読み込まない・・・なぜ・・・ 初心者です・・・
>>308 on (press) {
import mx.video.*;
screen.load("1.flv");
screen.play();
}
310 :
Now_loading...774KB :2006/10/22(日) 15:15:48 ID:PbWelJKH
>>308 そのとうり入れてみましたがだめでした・・・orz
>>308 たぶん、スクリーンに使ってるMCのパスが違うんだよ。
ステージ直下に置いているのなら、
_root.screen (あるいは、_level0.screen)
にしないといけない。
312 :
Now_loading...774KB :2006/10/23(月) 13:19:21 ID:A57NYDyR
>>308 うわああああ
動いたーーーーー!!!
あ(・∀・)り(・∀・)が(・∀・)と(・∀・)う!ございます。
動いたと思ったがやっぱり動いてなかった。 on (release) { _root.screen.contentPath = "movie1.flv"; _root.screen.play(); } でもこう書いたら何故か動きました。
314 :
Now_loading...774KB :2006/10/24(火) 02:55:06 ID:pgNrQzh9
ダイナミックテキストは読み込んだ文字数とか行数とかで 表示領域を可変にできないもんなんでしょうか? 外部からテキストを読み込む際、 数種類の文字があるとバランスが崩れてしまうんですが 可変にすることが出来ればそれが解消できるかな? と、思い質問しました。 どうぞよろしくお願いいたします。
316 :
Now_loading...774KB :2006/10/24(火) 03:14:13 ID:pgNrQzh9
>>314 本当にどうもありがとうございます。
やってみます。
317 :
Now_loading...774KB :2006/10/24(火) 03:16:18 ID:pgNrQzh9
318 :
Now_loading...774KB :2006/10/24(火) 04:31:59 ID:zW0h93De
環境:FlashMX2004ver7.2
moveToで線の始点を指定したいのですが、不要な線分が現れます。
XY軸を表現する2つのMC(xy0, xy1)にSin,Cos関数を描くため、始点を
for (gNo=0; gNo<=1; gNo++) {
this["xy"+gNo].moveTo(gx[gNo][u], -1*gy[gNo][u]);
....
....
}
のようにボタンアクション内に記述しました(ここでuは座標データの番号)。
※swfは
http://yu-net.info/swfup/viewswf.php/5336.swf Drawボタンで実行すると、Sinは原点から始まりこれはいいのですが、Cosは
原点から希望の開始点(0,60)まで不要な線分が現れます。これを消すには
どうしたらいいでしょうか?
>>318 なんかバグがあったような気がするが、とりあえずは
cosの方の座標位置をtraceして確認してみれば?
あとclear()だっけ、を入れる。
320 :
Now_loading...774KB :2006/10/24(火) 14:42:58 ID:xZex+JqW
読み込んだEUCの文字列をSJIS又はUTF8に変換する便利なクラスを 公開してるようなトコはないでしょうか。。
Flash8じゃバイナリ扱えない。 諦めてEUCを使わないこと。
322 :
320 :2006/10/24(火) 14:53:34 ID:xZex+JqW
>321 了解です。ありがとうございます。 サーバサイドに仕掛けを入れるように掛け合ってきます>取引先
>>319 すみません。始点はlineTo()のfor文とは別個に扱うべきところ
を同じ扱いにしていました(
>>318 には書いていません)。
お手数をおかけしました。単なる記述ミスです。
324 :
Now_loading...774KB :2006/10/25(水) 12:00:42 ID:SP7r0X1S
MX2004 AS2.0 以下のコードでパブリッシュしても 真っ白で何も表示されないのです。 _root.stop(); _root.createClassObject(mx.controls.TextArea, "txt",_root.getNextHighestDepth()); _rootにTextAreaを動的に配置するにはどうしたらいいのでしょうか。
325 :
324 :2006/10/25(水) 12:03:29 ID:SP7r0X1S
コードは_rootのフレームにかきました
>>324 TextAreaコンポーネントがライブラリにないのでは?
328 :
Now_loading...774KB :2006/10/25(水) 16:57:59 ID:utGy7K/E
ActionScriptのところにX²と書きたいですがX?になちゃいます。 どうすれば²を反映できるんでしょうか。(つд⊂)
329 :
Now_loading...774KB :2006/10/25(水) 17:30:59 ID:WdzKn/mW
FlashMX2004(Player7) 元はスペースで区切られた文字列: あか Red あお Blue きいろ Yellow のスペースをカンマに変換し、 str1 = あか,Red,あお,Blue,きいろ,Yellow という文字列を作りました。 これを配列 data1 = new Array(); に data1[0] = あか data1[1] = Red .... ... というように収めるにはどうすればいいでしょうか? data1 = new Array(str1) としても data1.lengthは1になり 不可でした。
330 :
Now_loading...774KB :2006/10/25(水) 18:51:42 ID:0sAuuKF3
>320 EUCテキストの読み込みをFlash6とか7でやれるって話を聞いたことがあります。 ANSIモード起動を使うとか
>>328 Math.pow( X, 2 )
>>329 str1 = "あか,Red,あお,Blue,きいろ,Yellow";
data1 = str1.split(",");
>>329 data1 = "あか,Red,あお,Blue,きいろ,Yellow".split(" ");
333 :
324 :2006/10/25(水) 19:11:47 ID:SP7r0X1S
334 :
329 :2006/10/25(水) 19:36:27 ID:I35QTqbt
335 :
328 :2006/10/25(水) 20:43:07 ID:utGy7K/E
>>331 言葉足らずでした・・。「X²」とアクションスクリプトで作ったテキストフィール
ドに表示させたいんです(つд⊂)。
337 :
Now_loading...774KB :2006/10/25(水) 21:35:19 ID:Jynfaj/+
すみません、助言を頂けませんか。環境はWin2000+MXです。 [やりたいこと] ・外部テキストの変数をフラグとして、変数Aが1のとき音1を、2のとき音2を鳴らしたい。 ※_root上のムービークリップBにon(enterFrame)で変数の記述されたテキストを読み込み、 on(Data)で変数Aを含めいくつかの変数の監視を行っている。 ・_root上に設置したボタンで、音1と音2をstopさせたい。 ・同じく_root上に設置したボタンで、音1と音2のボリュームをミュートにしたい。 ※これは↑ができればわかりそう。 [現状できていることと躓いているところ] ・_root上にサウンドオブジェクトSound1とSound2をつくり、_root上に設置したテストボタンでは再生可能。 ・ムービークリップBにて変数A=1のときSound1.start();としても鳴らない。 ・Sound1.start();を_路尾t。Sound1.start();とすると、たとえば音1が「あいうえお」という音声ならば 「ああああああああああああいうえお」というように再生されてしまう。 手元の本やネットで調べてもどうにもわからないのでこちらを頼ってきました… よろしくお願いします。
>>337 >_root上にサウンドオブジェクトSound1とSound2をつくり、_root上に設置したテストボタンでは再生可能
ができているならそんな難しくないと思うけど。今、
on(release){
音を鳴らすAS
}
って書いてあると思うけどそれを
if (A=="1"){
音を鳴らすAS
}
とフレームに書けばいい。
ミュートはSoundクラスに確かsetVolumってのがあるのでそれをSound1.setVolum(0)みたいにすればいい。
Soundクラスのヘルプを一通り読んでみては。
339 :
Now_loading...774KB :2006/10/25(水) 23:42:24 ID:JBHns8uX
341 :
Now_loading...774KB :2006/10/26(木) 00:15:26 ID:f/F23TVC
>>340 回答ありがとうございます。
opaque属性を削除してみたら動いたには動いたんですが
すごく重くなってしまいました。
重くならぬよう、動かせるようにするには方法はないでしょうか?
初歩的なことで悩んでいるアホに、どうぞ皆様、知恵をお貸しください。 当方XP、MX2004です。過去ログを検索しようにも、ググってみても探し方が悪いのか、 同義の質問が探せませんでした。既出でしたら申し訳ないです。 ステージに直接配置した、ちゃんと機能しているMC(ダイナミックテキスト:HTMLの OBJECTタグからデータをFlashvarsにて_rootに取り込まれ、表示可)を、 動的に配置される別MCに埋め込むと、文字が表示されません。読み込み先のパスを _parent._parent.にしてもダメ、_root.にしてもダメなのです。ソースはとても お見せできるようなものではなく、いじり過ぎて、自分で見てもとてもぐちゃぐちゃなので、 とてもここで披露できるものではないので、ご容赦を。何とか言葉によるヒントが欲しいのです。 どうしたら元のように表示できるようになるか、何が足りない、間違っているのかご存知の方、 お教えいただけないでしょうか。よろしくお願いします。
>>341 ごめん。俺にはわからない。
>>342 配置場所を変えてMCが機能しなくなったのならパスが原因かと。
trace(this)使って確認した方がいい。
344 :
342 :2006/10/26(木) 00:57:11 ID:zZQ8btud
>>343 trace(this)ですか。ありがとうございます。もう今日は遅いので、
明日、試してみます。こんな遅くまでお付き合いいただき、ありがとうございます。
345 :
337 :2006/10/26(木) 01:16:25 ID:4hpCFrGr
>338 なんとなくイメージがつかめたような… ムービークリップで変数を読み込んでいるから、ムービークリップ上に >if (A=="1"){ > 音を鳴らすAS >} このif文があるんです。これをフレームスクリプトにすればいいってことですかね? Sound関係のヘルプも目を通して見ますー
ActionScript3ってもう正式にリリースされてるんですか? SDKは無償でOKって話をどっかで読んだので触りたいです。
flashに「このページをホームページに設定」ってボタンを付けたいんだけど、
HTML側のHEAD内に
function setStartPage(){
window.document.body.style.behavior = "url('#default#homepage')";
window.document.body.setHomePage("
http://2ch.net ");
}
って書いて、flashのボタン側に
on(press){
getURL("JavaScript:setStartPage()");
}
とやっても、「エラー:書き込みできません」てJavaScriptエラーが出てしまう…
同じfunctionをHTMLから呼ぶとちゃんと動作するので、JS自体の問題じゃないと思うんだけれども
原因や回避策って誰かご存じありませんか?
ちなみにこのボタンはIEの場合のみ表示されるよう判別処理してます。
宜しくお願いします。
349 :
Now_loading...774KB :2006/10/27(金) 04:13:02 ID:gfkp/fOR
あるゲームを作っていて、ActionScriptで音楽(BGM)を流しているんですが、 var a_sound:Sound = new Sound(); a_sound.attachSound("bgm.wav"); a_sound.start(); だと、音楽が一回しか再生されません。 音楽を無限にループさせつづけるにはどうすればよいですか? 教えてください。お願いします。
>>349 以下ではどう?
a_sound.onSoundComplete = function(){
//終わった時の処理
a_sound.attachSound("bgm.wav");
a_sound.start();
}
351 :
Now_loading...774KB :2006/10/27(金) 06:25:04 ID:6ISNlMXU
環境=FlashMX2004とPlayer6 xyというMCに線を描く場合、xy.lineStyle(2, 0x0000ff, 100); の形で 色を指定(この場合は青)していましたが、 my_color = new Color(this); my_color.setRGB(cn_r << 16 | cn_g << 8 | cn_b); のようにRGBの0〜255で指定するにはどうすれば良いでしょうか? 目的は、xy内の線の色をcn_rなどの変数で変化させることです。
>>348 >ちなみにこのボタンはIEの場合のみ表示されるよう判別処理してます。
ここらへんんをコメントアウトして実行できるかどうか試してみればいいかも。
>>351 どうすればというか、普通に変化させればいいかと。
for文で段階的にとかonEnterFrameとか。
>351 xy.lineStyle(2, cn_r*256*256 + cn_g*256 + cn_b, 100); これ?
354 :
Now_loading...774KB :2006/10/27(金) 22:36:40 ID:GPCwJSA6
↓ボタンを押してる間だけ歩いているMCを表示させるにはどうしたらいいですか? 色々やっても歩いたままでorz よろしくお願いします
355 :
351 :2006/10/27(金) 22:49:34 ID:s7xBtHkI
>>352 , 353
さんきゅうです。
xy.lineStyle(2, cn_r*256*256 + cn_g*256 + cn_b, 100); をonEnterFrame
で繰り返すことにより変化できました。
>>354 flag=true/false を使ってon(press)/on(release) で切り替えるようにしたら?
357 :
Now_loading...774KB :2006/10/28(土) 13:17:44 ID:AhlAFrgi
>>355 flag=true/false on(press)/on(release) ですか・・・
すいません 解らないですorz 勉強不足ですね
flag=true/falseはなんとなく解るのですがどのように使えばいいのか・・・
if (Key.isDown(Key.UP)) {
this.gotoAndStop("back") ;
} else if(Key.isDown(Key.DOWN)) {
this.gotoAndStop("front");
} else if(Key.isDown(Key.RIGHT)) {
this.gotoAndStop("right");
} else if (Key.isDown(Key.LEFT)){
this.gotoAndStop("left");
}
をいじるのでしょうか??
>>356 まさにこのとおりです!!
MX使用です。 evalの使い方がいまいち理解できないので教えてほしいです。 問題のスクリプト簡単に書きます。 for(var k=0;k<=10;k++){ switch (hoge){ case book: ここ=[1,2,3]; break; case desk: ここ=[5,6,7,8,9]; break; ・・・・・・以下略 } } ”ここ”というところに、kの値に対応した変数名(k=0ならhensu0,k=2ならhensu2など)を入れるべくeval("hensu"+k)をいろいろ使ってみたのですがエラーがでたりしてうまくいきません。 可能だと思うのですが方法を教えてください。
>>358 evalの使い方というか、シンプルにやりたいことをまず書いてくれると
よく解るし良いレスつきやすいよ。eval自体使わない方がよいし。
>>358 ActionScriptのeval関数は既に定義されている変数への参照しかできないから
test1 = "test1";
test2 = "test2";
test3 = "test3";
for (i=1; i < 4; i++)
{
trace(eval("test" + i));
}
なら動作する
>>358 さんがやりたいことを俺がやるとすれば
myvars = new Object();
for(var k=0;k<=10;k++)
{
myvars["hensu" + k] = k;
}
みたいな感じかな
質問です。cgiからデータをロードし、使いやすいよう加工するクラスを作っています。 class myLoad { private var dt:Array; private var lv:LoadVars; public function myLoad(){ lv = new LoadVars(); } public function startLoad(){ lv.onLoad = onLoadFunc; lv.sendAndLoad("***.cgi", lv, "GET"); } public function onLoadFunc(){ dt = lv["data"].split(","); } } 以上のコードでmyLoadの変数dtにカンマ区切りデータを分割して格納できると 期待しましたが、onLoadFuncでのthisとはlvを指しているようで意図通りに動作しません。 onLoadFunc内でmyLoadクラスの変数にアクセスする方法はないでしょうか?
thisってどこ?
>>361 >期待しましたが、onLoadFuncでのthisとはlvを指しているようで意図通りに動作しません。
とりあえず動かしたいならdtをpublic staticにしたらどうでしょ?後はクロージャ使うか。
thisがmyLoadを指すようにする方法はちょっとわからないです。
後どーでもいいけど変数名短すぎ。作ってるうちはいいけど、後で読んでわからなくなっても知らないよ。
>>361 >意図通りに動作しません。
がどういう状態なのか(どこが原因なのか)よくわからないけど、thisがlvを指してるなら、
dt = this.hoge.split(",");
でいいんじゃない?
「this」じゃなくて「onLoadFuncメソッドでのスコープ」です。
thisがLoadVarsを指してしまっているメソッド内で、
myLoadの変数dtを示すにはどうしたらいいか?という質問でした。
説明がヘタで申し訳ない…。
>>363 がおっしゃるクロージャ、
調べてみたらいまやりたいことにピッタリで、
使ってみたところ意図した動きをシンプル書くことができました。
ありがとうございました。
>変数名
アドバイスありです。
上のコードは説明のために相当簡略して書いてたもので、
実際のコードでは和英辞典片手に唸ってますw
お答えいただきたいのですが。version8.0で製作しています。 ActionScript2.0において、ムービークリップを変数または配列を使用して 指定することは可能でしょうか。 ちょっとわかり辛いと思いますが、たとえば ひとつのシンボルから複数のインスタンスを作り、それぞれに movie_1,movie_2,movie_3…と名前をつけ、ActionScriptで movie_1.gotoAndPlay(1); movie_2.gotoAndPlay(1); movie_3.gotoAndPlay(1); ・ ・ ・ とするところを for(var i = 0; i <=10; i++) { movie_i.gotoAndPlay(1); } のように_1,_2,_3の部分を変数を変数iで置き換える、というようにしたいのですが。 いま256個のインスタンスを操作するゲームを作ってるのですが、 仕様変更やデバッグの事を考えると上の方法では作業効率が 著しく悪いと目に見えてるので… これに代替できる方法でもいいのでご教授ください。
for(var i = 1; i <=10; i++) { this["movie_"+i].gotoAndPlay(1); }
>>367 さん物凄い勢いで解答ありがとうございます!
ここ3週間の悩みが1時間で解決しました。
これで行数も1000行減りスッキリ。
よくよく見てみたら上の方法が本に書いてありましたが、
この問題とその箇所が結びつかず悩み続けていました…
プログラムは柔軟性がないとだめですね…
またお手数かけるかも知れませんがそのときもまたよろしくお願いします。
>>368 3週間あったらリファレンス10回読めるぞ
370 :
Now_loading...774KB :2006/10/30(月) 18:12:39 ID:plmYgSMI
質問させてください。 車の運転席から見える景色を撮影したビデオファイルがあったとします。 [アクセル][ブレーキ]というボタンを押すことによって、そのビデオファイル の再生速度を自由に変更することは可能でしょうか? Flashに直接、埋め込みビデオとして埋め込んだ場合は、nextFrame();でコマ送りする ことが可能ですが、8分という制約もありますし、メモリを食うので、長いビデオには 不向きです。そこで、メモリを食わない、外部flvファイルを再生することを考えているのですが、 このflvファイルの再生速度を外部から変えることって出来るんでしょうか? そもそも、flvに「コマ」の概念はあるのでしょうか? お知恵を貸してください。
>>370 YouTubeからの推測になりますが、おっしゃることは可能だとおもいます。コマの概念もおそらくあるでしょう。
ですがメモリ食うのはどっちにしろ同じですよ。
YouTubeのバー操作はコマ移動させてるワケでは無く、 秒単位で移動させてるだけだから、結論から言うと無理じゃないかな? 再生ヘッドの位置変更で指定可能な値は、単位:秒の整数です。
373 :
Now_loading...774KB :2006/10/30(月) 22:19:31 ID:wPhUmByf
・質問
再生開始用のボタンを押しても再生が開始されない(1フレームぐらいだけ再生されて、すぐに元に戻る)
ソース
http://seiekiradio.jf.land.to/kowww.fla コード
・プリローダー(frame1-2)
_root.onEnterFrame = function():Void{
if ( _totalframes == _framesloaded){
gotoAndStop("done");
}
total = _root.getBytesTotal();
loaded = _root.getBytesLoaded();
parpar = Math.floor(loaded/total*100);
_root.bar_dl._xscale = parpar;
updateAfterEvent();
}
stop();
・再生ボタンのあるフレーム(frame3-13/名前done)
・再生ボタン
on (release){
gotoAndPlay("st")
}
・ムービー本体(frame14-/名前st)
374 :
373 :2006/10/30(月) 22:23:56 ID:wPhUmByf
環境を書き忘れてたorz windowsXP FLASH MX ActionScript2.0
>>373 if ( _totalframes == _framesloaded){
gotoAndStop("done");
delete this.onEnterFrame;
}
376 :
373 :2006/10/30(月) 22:45:59 ID:wPhUmByf
質問です。 今、1からテキストに記述された数までのランダムな数+.swfと言う名前のswfを 読み込むASを組んでいるのですが、どうしてもファイル名がNan.swfになってしまいます。 いかにそのコードを載せますが、どこが問題になっているのでしょうか? AS:フレームに実装 stop(); loadVariables("num.txt",_root) n = parseInt(Text) path = (Math.floor(Math.random()*n) +1) + ".swf"; this.myMovie.loadMovie(path); num.txtの内容: Text=3 よろしくお願いします。
>>377 受信開始の処理と、受信後の処理がほぼ同時に行われてるから、
_root.Textには値が代入されません。 > trace(Text) ; //出力結果 : undefined
つまりその処理の流れの場合、
n= parseInt(Text) ;
から最後までを
_root.onData = function(){
} ;
で括る必要があります。
何はともあれloadVariables()よりも、LoadVarsクラスの使用を心掛けた方が良さそうな気も。
379 :
Now_loading...774KB :2006/10/31(火) 10:28:07 ID:N+wOe09r
(環境)FlashMX2004とPlayer7 あるMC(xy0)に入れ子としてMC(dragM)を置き、ここに on (press) { this._parent.startDrag(); } on (release) { this._parent.stopDrag(); } を書いて親(xy0)をDragできるようにしました。今まではこれで動かせて いたのですが、xy0に外枠を表示させるxy0自身のフレームアクション 1フレ目 stop(); this.onRelease = function() {//xy0(=this)の2フレ目に移動し、xy0に外枠を表示する this.nextFrame(); }; 2フレ目 stop(); this.onRelease = function() {//xy0(=this)の1フレ目に戻り、xy0に外枠を消すする this.prevFrame(); }; を書き足したところ、Dragが出来なくなりました。 原因は何でしょうか? on (release) の対象は入れ子のdragMなのですが、 これでも処理が衝突しているのでしょうか?
380 :
Now_loading...774KB :2006/10/31(火) 20:02:19 ID:KsUE+7+x
環境:Flash Professional 8 やりたいこと:NetStreamで読み込んだflvファイルの全時間が知りたい NetStreamには再生中の現時間を取得するtimeメソッドはありますが、 全時間を取得する方法はありますか? 初歩的すぎる質問かもしれませんが、どうか助けてください
>>379 以前近いことを試したとき、やはり深度が最も浅いMCのみが反応しました。
その時は
dragM
on(press){
this._parent.startDrag();
this._parent.nextFrame();
}
on(release){
this._parent.stopDrag();
this._parent.prevFrame();
}
というような感じで(実際はフレーム移動以外の処理もしてたので親のFunctionを呼んでました)
対処したと記憶してます。非常に場当たり的ですが。
>>379 親にアクション設定したら出来なくなったってことは、それが原因だってわかるんじゃないか?
onイベントは排他的に呼ばれる。
つまり、入れ子にすると一番外側に書かれたものが有効になる。
383 :
377 :2006/10/31(火) 22:55:46 ID:sMeHSlIl
>>378 >_root.onData = function(){
>} ;
>で括る必要があります。
ご解答のとおりに、n= parseInt(Text);から最後までを_root.onData〜で
括るとうまくいきました。
ありがとうございました。
385 :
Now_loading...774KB :2006/11/01(水) 07:41:19 ID:ydLweeGU
基本的な〜スレでも質問したんですが、ASなのでこちらでも質問させてください。 異なるドメインのサーバからの画像読み込みの際、そのリクエストにヘッダ情報を 追加することは可能でしょうか? イメージ的にはLoadClipでaddRequestHeaderをやる感じです。 現在はMXで開発をしていますが、AS3で可能ということであれば FLEX2の勉強をしようかと思います。よろしくおねがいします。
386 :
Now_loading...774KB :2006/11/01(水) 17:50:55 ID:BwuGWePA
環境 winXP flashMX2004 ActionScript2.0 メインがthis.stop();状態で 同じボタンを押すたびに変数を取得して、_mcのラベルにジャンプする。 という感じにしたいのですが、今まで、教本などを見て ボタンインスタンスに on (release) { _root.get変数 = 1; _rootの2フレームに if (_root.変数<=0) { _mc.gotoAndStop("ラベル"); } else if (_root.変数<=1) { _mc.gotoAndStop("ラベル1"); } else if (_root.kabe<=2) { _mc.gotoAndStop("ラベル2"); } else if (_root.kabe2<=3) { _mc.gotoAndStop("ラベル3"); } と書いて、 3フレーム目に this.gotoAndPlay(_currentframe-1); で、一応は動作できていたのですが _rootでループさせると重くなる。との事を聞き、いろいろな方法を試している のですが、上手く動作できないでいます。 よろしくお願いいたします。
>>385 マルチには解答しない
>>386 >_rootでループさせると重くなる
変わらない。ひどいプログラムの組み方をすれば変わるけど。
388 :
380 :2006/11/01(水) 18:44:42 ID:p7KL4QNS
>>384 レスありがとうございます。
非常に参考になるページを紹介して頂いたので頑張れそうです。
重ねて、ありがとうございました。
389 :
385 :2006/11/02(木) 09:21:44 ID:RlD+HXJb
マルチっていうか基本的な〜スレに書いた後にこっちのスレを知り、 こっちの方が適切なスレだと思って誘導される前に自ら移動しただけなんですが。 まあ、わかる人もいないようなので撤退します。
環境 XP MX2004 ActionScript2.0 swfをはってあるhtmlにjavascriptを書きます。 <SCRIPT LANGUAGE="JavaScript1.1"><!-- var msg = "start"; //--></SCRIPT> javascriptの関数を呼び出すことが出来るようですが javascript内の変数をflash内から取得できるのでしょうか? 以上よろしくお願いします
392 :
Now_loading...774KB :2006/11/02(木) 22:46:25 ID:R+KxkIz3
394 :
Now_loading...774KB :2006/11/03(金) 12:13:17 ID:3ujcnW8p
>>393 ありがとうございます!!
もっと勉強しなくちゃなぁ・・・
<(w・ )(>
395 :
Now_loading...774KB :2006/11/04(土) 02:38:14 ID:+EYpmR13
趣味でActionScript覚え始めたんですが、とりあえず「おしえてフラッシュ〜」の本は総合的に 理解できました。しかし、この板の方々の話全く理解できないんですよねぇ…w 次のステップへ踏み出したいのですが、何かオススメの書籍ありますでしょうか?
質問です。 現在以下のようなスクリプトを書いています logo = createEmptyMovieClip("logo", getNextHighestDepth()); logo.loadMovie("img/logo.jpg"); logo_listener = new Object(); logo_listener.click = enter_site; logo.addEventListener("click", logo_listener ); function enter_site() { trace("enter_site"); } ですが、表示された画像をクリックしても無反応です。 createEmptyMovieClipで動的に作ったMCに対して イベントを定義するにはどうしたらよいでしょうか? よろしくお願いします。
■環境 Windows XP Flash Player8 ■多次元配列の宣言について あらかじめ2次元配列を宣言しておき、後で受け渡される値から、配列の中に各々の値を入れ込むという作業を行いたいと思っています。 後で受け渡される値は、重複のないランダムで最大いくつまで増えるかはわかりません。 まず、以下のような宣言を行いました。 var list = new Array list[0] = new Array このとき、 load_list[0][0]= "00" load_list[0][1] = "01" load_list[0][2] = "02" という形で値を受け渡すと(実際は変数で配列の場所を指定)、意図通りに格納されたのですが、 load_list[1][0] = "10" と指定してデバッガで見てみると、値は格納されていませんでした。 最初の宣言の後ろに、 list[1] = new Array と指定してやれば、list[1][n]については、格納できるようにはなるんですが、最初に一括で、多次元配列を宣言するには、どうすればよいのでしょうか? ()
ふぉーねくすとやわいるでるーぷしょりしる
399 :
Now_loading...774KB :2006/11/04(土) 09:40:16 ID:i7pkQbBA BE:185006467-2BP(123)
>>395 それ総合的に理解してないよ。
知ってるところだけをかいつまんで理解してるんじゃないか?
>>396 ロードが完了してから定義してあげたらどうかな。
>>397 そこまで出来てるならforループを理解すればすぐできるよ。
>395 「オブジェクト指向とは」「ハッシュとは」「参照型とは」でぐぐって、 (ActionScriptに限らない)解説サイトを一通り読むと理解が深まると思うよ。 >397 // load_listのn番目がundefined(未定義)だったら。 if(load_list[n] == undefined){ load_list[n] = new Array(); } load_list[n][m] = "10"; 配列の中に配列がなかったらその都度作ってあげればおk。
×:undefined ○:"undefined"
>>398 ,400,401
素早いご解答ありがとうございます。
やはり、各要素ごとに宣言しないといけないんですね。
とりあえず、401さんに教えていただいた方法で、対応しようと思います。
arr=[];
if(arr[0]==undefined){
trace("undefinedはstringじゃないです");
}
//
>>402
405 :
Now_loading...774KB :2006/11/05(日) 22:45:24 ID:2uhkscol
12フレームあるAVIを埋め込んだflvムービーを30fpsで再生しているのですが、 このムービーをgotoAndPlay(都合上この命令ループさせなければならない)でループ再生しているのですが、 映像の最後がひっかかる感じでガクついてスムーズに再生できません。 原因は何なんでしょうか?よろしくお願いします。
406 :
405 :2006/11/05(日) 22:51:08 ID:2uhkscol
環境はflashMX7.2 CPU 2.75GHz メモリ 725MB です。
>>405 12フレームではなく、13フレーム目にgotoAndPlayを入れてみてはどうだろう。
>>407 13フレーム目や11フレーム目にも入れてみたのですがカクつきは治りませんでした・・・
>>405 じゃあ二枚用意して、片方が終わったときにもう片方の映像を流すのはどう?
ダブルバッファリングみたいになっていけるかも。
410 :
Now_loading...774KB :2006/11/06(月) 16:34:43 ID:msfom1v2
環境は、WinXP, FLASH8です。 既存の複数のSWFファイルをロードするMovieClipを作成していますが、ロードするSWFに配置してあるボタンのイベント(getURLをするなどの内容)を無効化して、 代わりのイベントを追加したいのですが、このようなことはできるものでしょうか? 既存のファイルはバージョン違い、フォントも自分のシステムにないためSWFのつくり直しはしたくないのです。 以下のような感じのコードです。 createEmptyMovieClip("myClip", 999); myClip._lockroot = true; loadMovie(currentSWF, myClip); var mouseListener:Object = new Object(); mouseListener.onMouseMove = function() { myClip.susumu.onPress = function() { loadMovie(nextSWF, myClip); } myClip.modoru.onPress = function() { loadMovie(preSWF, myClip); } }; Mouse.addListener(mouseListener); btn2.onRelease = function() { unloadMovie(myClip); preSWF = currentSWF; currentSWF = "02.swf"; nextSWF = "03.swf"; loadMovie(currentSWF, myClip); };
411 :
Now_loading...774KB :2006/11/06(月) 21:03:48 ID:ivcghLTI
ムービーをランダムに再生する様にしたいのですが どうやったらいいのでしょうか? このサイト見ろとかでもいいのでよろしくお願いします。
TextFieldのフォーカスを外す方法を教えてください。 何度フィールドの外をクリックしても、 またすぐに元のTextFieldにフォーカスが合ってしまいます。 Selection.setFocus(null); でも駄目だし、 {TextField}.selectable = false; としてカーソルを消しても、 裏ではフォーカスが合ってるらしくて、希望の動作の阻害となります。 環境は、Windows2000 / Flash Player 9.0、 Flash Basic 8.0 / ActionScript 2.0 です。 よろしくお願いします。
>>411 どういう作りをしたいのか解らないので
Math.random();を使うとしかこたえられんがな。
>>412 どういう事をやりたいの?
あなたの言う希望の動作がわからんのでなんとも。
>>413 Undo/Redoボタンで、配置したムービークリップを
表示/非表示にしているのですが(_visible使用)、
TextField を配置した時だけ動作がおかしくなります。
普通ならボタン押下後に、またそのボタンがオーバー状態になり、
連続して押せば動作が繰り返せます。
しかし、TextFieldがあると、Undo/Redoボタンを押した瞬間、
フォーカスがすぐにTextFieldに移ってしまい、
ボタンはオーバーではなく、オフの状態になってしまいます。
一旦マウスを動かして、
またそのボタンをオーバー状態にすればいいのですが、
かなり使いづらいので何とかしたいのです。
>>410 読み込んだswf中のボタンのイベントを消すなら、
//読み込まれるswf loaded.swf
my_btn.onRelease=function (){
trace("click")
}
//loaded.swfを読み込むswf
load_mc.loadMovie("loaded.swf");
//完全に読み込まれた後の処理
trace(load_mc.my_btn); //確認
delete load_mc.my_btn.onRelease;
load_mc.my_btn.onRelease = function() {
trace("click2");
};
>>411 Math.random()
>>412 XP Flash2004 Player7
テキストフィールド(テキスト入力タイプ)とボタンを置いてやってみたけど、
その状況を再現できなかった。(テキストにフォーカスは行かない)
なんかやりかた違う?
Flash ver.8.0 Player6 です。 swfからプリントアウトできるようにしたのですが 用紙の 縦方向/横方向 をflash側で決めることはできますか? if (myPrintJob.orientation == PrintJobOrientation.Portrait) { //もし用紙が縦方向なら、MCを90度回転させる mySprite.rotation = 90; } このように、プリンタの設定を読み込み それに合わせて、画像を回転させることはできたのですが できれば、プリンタの設定自体を 縦方向/横方向 に変更したいのです。 プリンタの設定を変えることは無理なのでしょうか。 よろしくお願いします。
417 :
Now_loading...774KB :2006/11/07(火) 14:18:50 ID:Cht28okt
>>415 410ですが、
//完全に読み込まれた後の処理
trace(load_mc.my_btn); //確認 (undefinedになっていない)
ができても、
load_mc.my_btn.onRelease への参照がundefinedになっておりイベントの削除はできませんでした。
418 :
Now_loading...774KB :2006/11/07(火) 18:14:58 ID:2/pO5GjA
419 :
Now_loading...774KB :2006/11/07(火) 20:10:37 ID:bY/jctQH
テキスト読み込みで、キャッシュを読まないようにする手法なにかありませんかね・・・? 奇数フレームをキーフレームとして、同じMC、おなじテキストを読み込んでいるんですが。 色々調べた結果、 テキストファイルの後ろにランダムな文字列や日付をつけて読み込めば読める、 という回避方法をみつけてやってみたんですが… on(load){ url = "xxx.txt?" + new Date(); this.loadVariables(url); } これだと、今度はテキストファイル自体読み込んでくれません。 なにか凡ミスでもしてるんでしょうか…お知恵をかしてくださいorz
>これだと、今度はテキストファイル自体読み込んでくれません。 サーバー側のテキストファイルの名前は"xxx.txt?日付"って形式になってる?なってないなら無理だよ。 Flash側からしたら存在しないファイル読み込もうとしてるんだから。 素直に利用者にF5キー押してくださいとお願いする方法しか私には思いつかない。パスorz
412ですが、原因がわかりました。 配置していたプログレスバーを削除したら正常に動きました。 どうもコンポーネントを配置していると、 TextFieldのフォーカスの動きがおかしくなるようです。 Flash自体のバグでしょうか。 ちなみに、コンポーネントはライブラリに置くだけでも フォーカスの動きが変になります。 コンポーネントのプロパティで、 「リンケージ」→「ActionScriptに書き出し」のチェックを外せば 正常に戻るのですが、インスタンスを配置したら、 結局また動きがおかしくなるので、あんまり意味ないですね……。 プログレスバーは自作したので、とりあえず問題解決です。
424 :
418 :2006/11/08(水) 00:30:55 ID:84gn+O0g
>>420 遅くなりましたがどうも!
そのページで勉強してきます
425 :
419 :2006/11/08(水) 01:50:45 ID:Hjo7gl9f
>421-422 そうなんですか… flashプレイヤー単体だと読み込めないけどhtmlに埋め込んだ状態ならできる、 と書いてあったのでいけると思いましたけど、テキストの名前がそうなってないとダメなんですね。 F5つかえない仕様なので、なんとか違う方法模索してみます。 ありがとうございました。
>>419 url = "xxx.txt?" + new Data().getTime() ;
Date()だべ
429 :
Now_loading...774KB :2006/11/08(水) 22:38:12 ID:PaVLeFWw
商用のオールFLASHのサイト等で、メニューボタンを押すとローディング画面が出てからその項目が表示されてるタイプは あらかじめその項目ページのswfを作って、その部分をloadMovie等でMCに読み込み表示しているって方法でやっているのでしょうか?
430 :
Now_loading...774KB :2006/11/08(水) 22:47:50 ID:06TuAldg
flvムービーをライブラリに取り込んでいるのですが、 それぞれのムービーの全フレーム数を知るにはどうすればいいでしょうか? プロパティには秒数は書いてあるのですがフレーム数が分かりません。
431 :
Now_loading...774KB :2006/11/08(水) 23:05:35 ID:CET+famY
>>429 そう。最初から全部読み込むと重いから。
433 :
430 :2006/11/09(木) 13:12:23 ID:FbyHo+Su
>>431 すいません。どのように取り込めばいいんでしょうか?
教えてください。 aという変数にランダムで0から10までの整数を入れたいんですが、 やり方がよく分かりません。 Math.random()を使うとランダムな整数は生成できるんですが、 指定の変数への代入ができません。 よろしくです。
a = Math.floor(Math.random() * 11)
436 :
434 :2006/11/10(金) 10:36:37 ID:uF5DoVFM
はや! てかありがとう。 なんと、こんな単純だったとは。 えらい長々と書いてたのに・・・・。 アリガトン。
ダイナミックに作成するテキストフィールドで埋め込みフォントを使おうと 思ったのですが、ライブラリにフォントを作成しようとすると文字セットを 選択する項目が見当たりません。数字だけ使いたいのですが、文字セットを 使う方法ってありませんか?
>>437 必要な文字埋め込んだテキストフィールドをどっかに配置しとくとか。
>>438 ダイナミックには作成しない方が良いということでしょうか?
>>439 テキストフィールドをASで作ってもフォントの埋め込みは別に必要だろうと。
フォントシンボルはフォント全体埋め込みだったから、限定したフォントを埋め込むなら
限定した文字だけのフォントを用意するか、リンケージとか隠し配置とかして必要フォントを
swfに埋め込む必要があるじゃないかな。
数字だけなら1つづつシンボル化しちゃえば?
テキストフィールドのダイナミック作成は、特定の文字だけの使用には適していないと いうことですね。別の方法でやってみます。ありがとうございました。
>>442 埋め込みフォントの場合
>>438 の言ってるように、オーサリング時に、
使いたいフォントを埋め込んだダミーのテキストフィールドを作っておいて、
createしたテキストフィールドに、そのフォーマット情報を適用する。
>>443 新規に作成したフォーマット情報をsetTextFormatで適用するやり方はわかるのですが、
ダミーのテキストフィールドのフォーマット情報をTextFormatとして扱うには
どうすればよいのでしょうか?
わかりました。 getTextFormat()ですね。ありがとうございます。
446 :
Now_loading...774KB :2006/11/11(土) 12:29:05 ID:irs+OSUi
attachMovieでリンゲージした円のMCを、alphaやサイズをランダム表示させているのですが このままではランダムで表示された円が全て同じタイミングで表示されてしまいます それぞれをバラバラのタイミングで表示させるにはどうすれば良いのでしょうか 因みにOSはWINxp、FLASH2004です for (i=0; i <= 5; i++) { newName = "en"+i; new_mc = this.attachMovie("en_mc", newName, i); new_mc._alpha = Math.floor(Math.random()*100); sca = Math.floor(Math.random()*100); new_mc._xscale = sca; new_mc._yscale = sca; new_mc._x = Math.floor(Math.random()*200); new_mc._y = Math.floor(Math.random()*200); }
447 :
446 :2006/11/11(土) 12:38:54 ID:irs+OSUi
あと、446をプレビューすると、一度円が表示された場所・形でずっと表示されているのですが そこもランダムにさせる方法もあれば宜しくお願いします;
448 :
sage :2006/11/11(土) 12:56:10 ID:WFzRzdtA
Flash9 Public Alpha + ActionScript3.0 での
swf 全体のサイズ取得について教えてください。
2.0 では _root.getBytesTotal() で取得出来ていたやつです。
LoaderInfoクラスのbytesTotalプロパティ
(メインタイムライン上で this.root.loaderInfo)
を取得すれば、と思ってリファレンスを読みました。
bytesTotalプロパティの説明:
>メディアファイル全体の圧縮後のバイト数です。
>
>この LoaderInfo オブジェクトの対応する Loader オブジェクトによって
>最初の progress イベントが送出される前は、bytesTotal は 0 です。
>Loader オブジェクトからの最初の progress イベントの後は、bytesTotal は
>ダウンロード済みの実際のバイト数を反映します。
というわけで Loader からのイベントが必要みたいですが
LoaderInfoクラスの説明では
>SWF ファイルのメインクラスのインスタンスに Loader オブジェクトは含まれない
という事なので
メインタイムラインクラスの Loader のイベントを受ける
設定済みのリスナとかないと bytesTotal は 0 のままのような気がします。
swf のサイズを取得できないハズは無いだろうし
根本的に方法を勘違いしているのか・・・
どうしたら良いのか分かりません。どうかご示唆下さい。
Adobe Flex 2 リファレンスガイド Class LoaderInfo
http://livedocs.macromedia.com/flex/2_jp/langref/flash/display/LoaderInfo.html
すんません…慣れてないもので
>>446 何がしたいのかイマイチ解らん
特に
>一度円が表示された場所・形でずっと表示されているのですが
>そこもランダムにさせる方法
どうゆうタイミングでランダムに変化させたいの
どうゆうふうに移動させたいの
とりあえず適当に↓でどう フレームアクションにコピペね
rootCount=0;
_root.onEnterFrame=function(){
if(rootCount<=5){
newName = "en"+rootCount;
new_mc = this.attachMovie("en_mc", newName, rootCount);
new_mc._alpha = Math.floor(Math.random()*100);
sca = Math.floor(Math.random()*100);
new_mc._xscale = sca;
new_mc._yscale = sca;
new_mc._x = Math.floor(Math.random()*200);
new_mc._y = Math.floor(Math.random()*200);
new_mc.onEnterFrame=function(){
var sca=Math.floor(Math.random()*100);
this._xscale=sca;
this._yscale=sca;
this._x=Math.floor(Math.random()*200);
this._y=Math.floor(Math.random()*200);
}
rootCount++;
}
}
451 :
Now_loading...774KB :2006/11/11(土) 15:31:00 ID:eKUrn2uy
ヘルプにあるムービークリップ(以下MC)のサブクラス作成についてはできた…けど 仮に、その MC 内に何か別の MC インスタンスを配置して、そのインスタンスを サブクラスから参照したい場合はどうすればいいんですか?
>>448 ローカルでは0を返すみたい。サーバにアップすれば取得できると思うよ。
454 :
Now_loading...774KB :2006/11/11(土) 20:13:18 ID:AuqVd95h
flvを読み込む際、そのflvの現在の位置(秒数)をtimeで取得することはできました。 しかし総時間を取得することができませんでした。 どうにか取得する方法はありませんか? どなたかご存知の方よろしくお願いします。
マウスクリックを3回されるとネクストシーンに行くボタンが出現 というのを作りたいのですが どういう指定をすればよいでしょうか。
>>454 メタデータを読む。
>>455 on(release){
if (cnt >= 2){
this.gotoAndPlay(2)
}else{
cnt++
}
trace(cnt)
FlashMX2004以上ならどっかでcnt=0と初期化しとく
457 :
Now_loading...774KB :2006/11/12(日) 21:21:34 ID:puB27Dwn
Q)ファイル名の検出 環境:FlashMX2004_ver7.2(Playerは6か7) OSはWinXP-Pro フォルダを指定し、そこにあるファイル名の一覧を取得する方法を探って います。先ずは、ムービーと同一のフォルダ内で取得したいのですが、どう すればいいでしょうか? ファイル名を指定した場合には、Xmlを使って中身を見る段階までは出来て います。 ※Flash-JPでも同様の質問をしていましたが、あちらは削除して こっちに移動しました。
>>457 フォルダ内のファイルの取得は出来ない。
txtとかに取得したいファイル一覧見たいのをつくっておけばできる。
460 :
457 :2006/11/13(月) 06:02:27 ID:pynvoLO/
>>458 ,459
さんきゅうです。FlashのAS単独では無理なんですね。
では、今から録画しておいたU-19の試合を見ます ノシ
test
462 :
Now_loading...774KB :2006/11/15(水) 22:47:05 ID:Sec2qlvK
on (release) { getURL("/test.cgi","_blank","POST") } これでcgiに変数を送信してもGETとしてデータを送ってしまいます。 POSTで送信したいのですが、スプリクトもこの3行しか書いていなく もはやどこをいぢれば良いのか分かりません POSTで送信するにはどうすればよいのでしょうか
464 :
Now_loading...774KB :2006/11/15(水) 23:03:28 ID:Sec2qlvK
>>463 LoadVarsクラス用いたsendやsendAndLoadでやりとりしてもGETになってしまうのです
ちなみに今回はgetURLの使用を目的としています
>>464 ヘルプによるとムービープレビューやswfからではなくブラウザ
(多分htmlにswf貼り付けたやつ)からやらないとGETになるらしい。
>>465 ブラウザウィンドウでドキュメントをテストしてくださいそうでないと〜と書いてありましたね
ありがとうございます
ムービークリップAをフレーム名CとBの時に非表示にするという記述はどうすれば良いですか?
>>467 AS2.0まではラベル名の取得はできないから
何フレーム目かとか該当フレームに来たらフラグ立てるとかして
それを基準に表示非表示を切り替える。
今、ある計算の結果の数値を小数点以下の桁数を揃えて表示しようとしています。 とりあえず余計な桁を四捨五入した上で 省かれた末尾の0の数を調べて補うという愚直な方法ならできそうなのですが、 整数の場合は小数点も補わなきゃならないし、 足りない桁数を調べるのにif文を複数使う羽目になるし、 何より、後から表示桁数を変えようと思ったときに大変なのが目に見えています。 最終的に得られるものはもちろんStringでかまわないので、 もっとすっきりとした処理で桁を揃える方法はないでしょうか? そういう関数か何かが見つかれば一発で話が済むんですが・・・
>>469 >そういう関数か何かが見つかれば一発で話が済むんですが・・・
作ればいいじゃん
function mm(num, t) {
//tは小数点以下の桁数
var zerostr = new String();
for (var i = 0; i<t; i++) {
zerostr += "0";
}
var tmp = Math.round(num*Math.pow(10, t))/Math.pow(10, t);
var tmpstr = new String(tmp);
var tmparr = tmpstr.split(".");
tmparr[1] += zerostr.substr(tmparr[1].length, t);
tmpstr = tmparr.join(".");
return (tmpstr);
}
>>469 関数作ってしまえばいいんじゃないかな?
例えばこんな。
function t(n,f){
return String(n
>>0 ) + "." + String((n*Math.pow(10,f))
>>0 ).substr(-f,f)
}
trace(t(1,2))
trace(t(1.5,2))
trace(t(1.5,3))
四捨五入じゃなくて切捨てだと
>>471 の方が短くてイイ!惚れた。
473 :
Now_loading...774KB :2006/11/16(木) 20:25:31 ID:cyL5bBCA
ActionScriptで、サーバから画像(jpeg)とサウンドデータが結合されているファイルをhttp経由で取得して、 受け取ったデータの中から画像データと音楽データを切り出して、 それぞれ画像を表示、音楽を再生する といったことって可能なのでしょうか? バイナリデータのヘッダ部分を切り出したりとか。 WinXP, Flash 8 Pro、AS 2.0 で可能であれば mtasc での開発を考えてます。
最後の一行はそういう関数がもとからあるなら、という意味で書いたのですが、
勘違いを招いたようで、申し訳ありません。
>>470 一度配列にしてしまうという発想はありませんでした。
この方法はいろいろと応用できそうですね。
大変参考になりました。ありがとうございます。
>>471 あまりにスマートでびっくりしました。
四捨五入にするには、先に
n += 0.5/Math.pow(10,f);
を入れればいけそうですね。
助かりました。ありがとうございます。
476 :
Now_loading...774KB :2006/11/16(木) 21:30:07 ID:cyL5bBCA
AS 3.0 に ByteArrayクラス というのがあるので出来るのかと思ったのですが、、、
>>473 のような使い方はできない?
>>476 なんかさ、サーバサイドのPGとごちゃ混ぜにしてると思われるんだけど。
何をしようとしてるか解らんが。
478 :
475 :2006/11/16(木) 22:31:16 ID:zHpTOQwG
>>476 >WinXP, Flash 8 Pro、AS 2.0 で可能であれば
AS2.0の話じゃないの?3.0のことはわからない。
cgiとかで画像と音楽のアドレスを渡すんじゃだめなの?
479 :
473 :2006/11/16(木) 22:40:07 ID:cyL5bBCA
うーん、分かりづらくてすいません。 簡単に言うと、jpegファイル1枚と wavファイル1枚 を cat で結合して、 頭にwav部分の開始位置情報(4octetぐらい)を付けたファイル、とお考えいただければ問題ないです。 ASでそのファイルをhttp経由で受け取り、 頭4octetを数値として取り出して、5バイト目〜分割位置までをjpegとして取り出し、残りをwavとして取り出す。 で、jpeg をステージに置いて、同時にwavを再生する って感じなのですが。 バイナリから必要なデータを切り出すといった処理自体は特に珍しくはないと思うのですが、確かにASでは今までバイナリ直接を扱えなかったのが、 AS 3.0から使えそうなクラスがあるみたいなので、利用できるかなと。 何か勘違いしてますかね?
480 :
473 :2006/11/16(木) 22:56:54 ID:cyL5bBCA
>>478 AS 2.0 で可能であれば嬉しいんですが、
3.0 じゃないと駄目であればそれ用の環境を用意するつもりです。
>cgiとかで画像と音楽のアドレスを渡すんじゃだめなの?
んー ちょっと今回の目的はバイナリデータをASで操作できるかという点を知りたいもので、、、
481 :
Now_loading...774KB :2006/11/17(金) 02:19:46 ID:zxDovQ0P
OS:WinXP-ProでFlashMX2004(Player7) AS2.0 この環境で、テキストファイルの属性情報(プロパティ)の内、 テキスト作成時間を取得する方法がありましたらお教え下さい。
>>479 この板にAS3扱える人間は数えるほどしかいないよ。
で、言ってることは半分可能。
まずバイナリデータを読みこむ、これは可能。URLStreamクラスとByteArrayはまさにそのために用意されてる。
だけど後半は無理。バイトデータからSoundやBitmapImageを直接生成する方法がないから。JPEGデコード自前で
やる!って気合が入ってるならJPEGに関しては話は別だけど、Soundにいたってはどうあがいても無理。
483 :
473 :2006/11/17(金) 12:18:25 ID:2UZJOvrQ
>>482 なるほど! まさにバイトデータからイメージのオブジェクト化の部分が問題かなと思ってたとこです。
BitmapData ってのがあるようですが、そうするとjpegではなくbitmapであれば読んだデータをsetPixelとかで直接再構築できますかね?
あるいは、切り出したjpeg、wavをローカルに書き出して、Image() とかで再取得すれば可能かなと、、、どうでしょう?
>読んだデータをsetPixelとかで直接再構築できますかね? BMPだろうがGIFだろうがJEPGだろうが自前でデコードできるなら可能。察しのとおりsetPixelメソッドがあるから。 >切り出したjpeg、wavをローカルに書き出して この作業がFlashでは無理。これはFlashが悪いってわけではなく、FlashはWebアプリケーションのフロントエンド を目指しているから、必要ないと切り捨てたというのが正しい。 もちろんこの作業をしてくれるCGIを作れば可能だけど、それじゃ意味ないんでしょ?よく分からないけど。
485 :
473 :2006/11/18(土) 01:18:56 ID:QPUl8mEg
>>484 うはーなるほど。的確な回答ありがとうございます。
その後も調べてみたんですが、やはり難しそうですね、、、
すげー助かりました。ありがとうございましたー!!
486 :
Now_loading...774KB :2006/11/18(土) 10:42:57 ID:+Ue6i1GZ
配列要素を全て削除するメソッドor方法ってありますか?
自己レス。こんな具合でできました。さらばw test = new Array(); test = [2,2,22,22,222,2]; trace(test[2]); test = new Array(); trace(test[2]);
488 :
Now_loading...774KB :2006/11/18(土) 11:05:42 ID:oI0dejCg
>>487 はぁ?別の配列を新しく作ってるだけじゃん。
前の配列は参照されずに消滅しちゃってますけど?
削除するならdeleteすればいいのに
別に削除しなくたっていいよ。もう使わないんでしょ
>>487 できてないし。正しくはこう。
var arr: Array = [ 0, 1, 2, 3 ];
arr.splice(0);
trace( arr.length ); // = 0
終わり。AS3だけどAS2にもspliceメソッドがあるのは確認したよ。
AS1.0どころかflash5の時代からありますが。 >正しくはこう。 ( ゚д゚)・・・・。 (つд⊂)ゴシゴシ (;゚д゚)・・・・。 ( ゚д゚ )
>>493 ??意味が取れないけどnew Array()するのが正しいの?
>>492 >できてないし。
>>486-487 デバッカでブレイクポイントいくつかつけて確認。
少なくとも元の配列要素は表向き消えている。
つまり
>>492 はflashplayerのガーベッジコレクションが機能したか機能してないかわかったことになる
たしかタイミングはクライアント環境によるはずだったんだけど、できてないと断言できるのかすごいなぁ
もしよろしければ断言した理由を教えてもらえませんか?
ちなみにnew Arrayが間違いでArray.spliceが正しいとした理由もお願いします。
498 :
Now_loading...774KB :2006/11/19(日) 07:59:47 ID:rQvw2Lup
>>497 >>487 のやり方だとArrayクラス自体別のものを作ってしまってるので
元の配列クラスにアクセスできなくなる。
参照の概念を理解してないとみえる。
var a = b = [0, 1, 2, 3];
a = new Array();
a[0] = 4;
trace(b[0]);
>>492 のやり方は連結リストだけが消滅してるので
アクセスが維持される。こっちが正しい。
まあ早いかは知らんけどな。
var a = b = [0, 1, 2, 3];
a.splice(0);
a[0] = 4;
trace(b[0]);
変数testに新たなnew Array()クラスの参照をいれて
しまったためにはじめに作ったArrayクラスにアクセスできなくなる。
誰からも参照されなくなったかわいそうな
Arrayクラスはガベージコレクトが回収してくれる。
>>497 あまりにも挑発的すぎて反論するのマンドクセ('A`)
・Flash PlayerのGC実装がウンコ。自前でメモリ管理してる人すらいる(自分もしてる)
・配列をクリアするメソッドがわざわざ用意されているのにnewするのは無駄
この二点から察してくれ('A`)
もうひとつ追記しとくと、Arrayが複数で参照されてるとき
>>487 は謎のバグに泣くことになる。
問題が起こる可能性がある解法はバッドノウハウと呼ばれる。
分かって使うならいいけど、そうじゃないなら使わないほうがいいし、つまりはここで紹介すべき方法じゃない。
>自分もしてる >配列をクリアするメソッド >謎のバグ 察しておくよw
GCが完璧なら487でも問題ないけど、安全策をとるなら断然492だろう
自分でメモリ管理するとか何なの?
脳内だろ。そっとしといてやれよ。
こんにちは。最近FLASHの勉強を始めた者です。 actionscriptで行き詰まって質問しに来ました。 ステージ上に星マークを3つ並べて動かすアニメを作っていて、ボタンで制御するために 一旦動きを止めようと思って「_root.stop();」を書き込んだのですが、プレビューすると星が止まらず 動いてしまいます。これは何が原因なのでしょうか。どなたかご教授願います。 ↓1フレーム目に書き込んだ内容 _root.stop(); function stars() { this._x = (this._x+5)%550; } _root.star1.onEnterFrame = stars; _root.star2.onEnterFrame = stars; _root.star3.onEnterFrame = stars;
506 :
Now_loading...774KB :2006/11/19(日) 16:18:42 ID:rQvw2Lup
>>505 アニメーションをとめたかったら
_root.star1.stop();
_root.star2.stop();
_root.star3.stop();
移動をとめたかったら
_root.star1.onEnterFrame = null;
_root.star2.onEnterFrame = null;
_root.star3.onEnterFrame = null;
イベントハンドラをnullで潰せ。
>>503 オブジェクトプールを使ってる。使わなくなったオブジェクトはプールに回収する手法で、
オブジェクトが必要になったらプールから引っ張り出す。
自身でメモリ管理する方法としては一般的で、
>>504 には悪いけど私が考案した手法じゃないよ。
>>508 これがメモリ管理じゃなくて何がメモリ管理なのさw
いっとくけどASはObjectが最小単位だから、CやC++のような低レベルメモリ管理を想定
してるんだったらお門違いだよ。
これでもわからないって言うなら、あなたと自分のメモリ管理の定義が違うって、それだけだよ。
まぁ定義なんてどうでもいいや。 ともかくFlashPlayerのGCを経由しないって点が肝要。 特にSpriteとか動的生成する場合、作って捨ててじゃもったいないからさ。
511 :
Now_loading...774KB :2006/11/19(日) 17:53:11 ID:ozZbpUMr
あーそうなの。 反論するのマンドクセ('A`) wwwwwwwwwwwww
512 :
Now_loading...774KB :2006/11/19(日) 19:29:58 ID:rQvw2Lup
>>510 つうか後ろで常にGCエンジンが動いてるのに
糞遅いASでわざわざ管理するほうが速度的に無駄じゃないか?
>>512 ArrayにPush、Popするだけの手間だから負荷はそこまでかからないよ。
ただ面倒だから使う場所は限定的。(例えば大量のSpriteとか)
>速度的に無駄
自分の場合AS3だからそうは思わないのかも知れない。
ともかく、そういう手段も存在する、くらいに思っててくれたら幸い。
それとGC走らせたくない理由は、高FPSのゲームだとGC中とまるってのがある。 FlashPlayerは世代別GCを積んでるみたいだから、そこまで神経質になる必要は ないのかもしれないけど、 自分の場合Spriteみたいな大きいオブジェクトを作っては捨てしてたら もったいないおばけが出るってのが大きな理由かもしれない。 まぁそれだけの話。
515 :
Now_loading...774KB :2006/11/19(日) 20:36:55 ID:rQvw2Lup
>>513 AS1は超おっせーよ。
今使ってるAS3を1/10にしたくらい遅いと思ってくれ。
Arrayクラスのメソッドで連結リストを
はずしたものは結局GCが回収するだろ。
手動で消そうと思ったら1つ1つdeleteするしかないのでは?
>>514 GCは意図せずとも常に走ってるだろ。
自分で完璧に生成破棄しててもな。
むしろゲーム中にとまるのは、swfファイルにアセットで埋め込んだ
リソースの読み込み時。
ところでSpriteクラスってのは、
BitmapDataみたいにメモリ馬鹿食い
するものなのか。それなら納得だが?
そういう何も作れない奴の脳内技術談義は 「技術交換スレ」という隔離スレでしてくれ
えーとなんでそんな喧嘩腰なの?自分気弱いから勘弁してよ… >はずしたものは結局GCが回収するだろ。 GCが回収しないようにリンクを保持するのがオブジェクトプールのポイント。 オブジェクトプールには、未使用のオブジェクトへのリンクがたまってると思ったらいいよ。 必要に応じてオブジェクトプールから引き出していく。 >GCは意図せずとも常に走ってるだろ。 えーと、GCは常に走ってないよ。 走るときはメモリが閾値を超えたとか、なんらかの要因でメモリが足りないとGCが判断したとき。 リファレンスカウンタ法以外のGCは、GC中には原理的に必ず止まる。 これがサーバーサイドならともかくクライアントサイドじゃGCは使えないって昔言われてた原因。 今は世代別GCである程度緩和されてる。 >メモリ馬鹿食い 普通重いものぶら下げたりするから、重いよ。先に読み込こんでおけるのもオブジェクトプールの 利点かな。
この辺で終わりにするよ。以後レスしないことにする。
519 :
Now_loading...774KB :2006/11/19(日) 21:28:23 ID:ozZbpUMr
最後まで元の配列の質問に関係無い俺様技術のご披露御苦労様
520 :
Now_loading...774KB :2006/11/19(日) 22:44:26 ID:rQvw2Lup
>>519 お前もんもう(←ただしいけど変換できない)か?
ちゃんと配列に関係した話してるだろ?
521 :
Now_loading...774KB :2006/11/19(日) 22:54:26 ID:ozZbpUMr
お前は連結リストでも解除してろよww
522 :
Now_loading...774KB :2006/11/19(日) 23:07:46 ID:rQvw2Lup
521 :Now_loading...774KB:2006/11/19(日) 22:54:26 ID:ozZbpUMr お前は連結リストでも解除してろよww
>>520 マジで聞くけど「もんもう」ってなんのこと?
「がいしゅつ」的なことを言いたいんだろうけど正直わからん。
文盲ってATOKなら変換できるぞ
_, ._ んもー! ( ・ω・) . . ○={=}〇, ; .'´ `. ゙ ; ` |:::::::::\,.'.;´," :´,´' . ゙ .` . .,,.,.,,,,.,,.,.,,,.,.,,,.,.,,,.,.,し,,.,.,`(.@)wwwwwwwwwwwww
526 :
505 :2006/11/19(日) 23:48:05 ID:rGJWqDfN
>>506 ご教授ありがとうございます!!
やってみたところ、移動を止める方法で止まりました。
・・・ですがアニメーションを止める方法で記入すると止まりませんでした。
そこでまた初歩的な質問で申し訳ないのですが、「移動を止める」「アニメーションを止める」
の違いってどういうことでしょうか。
527 :
Now_loading...774KB :2006/11/19(日) 23:55:36 ID:ozZbpUMr
>>523 >>520 の使ってる「文盲」は「文章の意味が読み取れない馬鹿」という意味。
「元の配列の話」を「配列の話」と読み違えるような文章読み取りスキルの低い
連結リスト馬鹿の事を指したい時等に使いたんだろう。
528 :
523 :2006/11/20(月) 00:23:01 ID:d2ctkOyy
>>527 なるほど。どうも。
>>526 onEnterFrameを使って動かしているものは
onEnterFrame=nullかdelete onEnterFrameで止めて、
フレームの再生はstop()で止めましょうってことだと思うよ
529 :
505 :2006/11/20(月) 00:27:58 ID:DUA4p3qF
>>528 なるほど...
頭ではわかった気になってもいざ実践になると難しいものですね。。
いろいろあがいてみます。
ありがとうございました!
530 :
Now_loading...774KB :2006/11/20(月) 02:04:58 ID:jHyycJ4d
>>527 データ構造のアルゴリズム理解してから全レス100回読め。
複数のMC(同じMCをステージ上でコピペしたもの)に、 それぞれに同じASを書きたいのですが、効率の良い方法はあるでしょうか? 今、ステージ上に同じMCのコピーが100個以上あり、全て同じASを書きたいのです。 しかし、これだと作業をしていくうちにASを書き換えたいと思ったら、 100個全てにコピペのしなおしで手間がかかります。 例えば、「ドラッグして複数のMCを選択してASを書くと、 全てにそのASが書き込まれる(この方法はできませんでした)」 といったような、複数のMCのASを一括操作する方法はあるでしょうか? 自分で考えてみたのは、 今ステージ上に配置したMCにASを書き込んだ状態のものを、 さらにMCにすれば、一括管理できそうだということなのですが、 インスタンス名をまた全部書き直しなので他の方法があれば知りたいところです。 よろしくお願いします。
>>531 ほしい数だけ、attachMovieすりゃいいじゃん。
>>532 すいません、attachMovieというのを知らなかったのでググッてみたのですが、
いまいち、今の状況にどう利用するのかがわかりません。
>ほしい数だけ、attachMovieする
というのは、
>>531 で自分が書いた、
>今ステージ上に配置したMCにASを書き込んだ状態のものを、
>さらにMCにすれば、一括管理できそうだということなのですが、
>インスタンス名をまた全部書き直しなので他の方法があれば知りたいところです。
という部分に対してのことでしょうか?
上で質問したような、
既に配置されている複数のMCのスクリプトを一括して変更するような方法のことではないですよね?
例えば、複数のMCを拡大縮小させたいときは、
複数のMCを選択した状態で拡大縮小ツールを使えば一括して変更できますよね。
ああいう感じで、スクリプトもできないかな?と思っているのですが。
>>533 まず、attachMovieでヘルプを検索する。それでも解らないなら再度質問してくれ。
ま、シンボルにMCつくってそれを動的にattachするだけなんだけど。
>>533 だから、ひとつMCを作るって、(これがオリジナル)
それを100回attachMovieすればいいんだって。
もちろん、実行してはじめてMCが表示される。
こういうことができないっていうなら、
構成しなおしたほうがいい。
>>534-536 多分こちらの聞き方が分かりにくいのだろうと思いますが、
例えば、
ステージに、同じシンボルのMCからつくられた丸が10個あったとして、
それぞれに「クリックで自分のalphaが50になる」というスクリプトが書いてあるとします。
ここで、「やっぱりalphaは50じゃなくて25にしたい」と思ったら、
全てのスクリプトを一つ一つ直す必要がありますよね?
それを一括して直せるような方法があればいいな。と思っていたのです。
(もともとシンボルの中に書いたものを配置すればよかったのですが、
やり直さなくても上手い方法は何かないかな?と。)
ヘルプも読んでattachMovieのことは少し理解したのですが、
100回attachMovieをした場合、
その複製されたMCにはASが書き込まれている状態にできるのか?というのがいまいち分からないのと、
今つくっているものの場合、MCの配置が規則的でもなくランダムでもないアナログ的な配置なので、
100個全ての場所を一つ一つ書かなければならないと思うので、ちょっと合わないかなと思っています。
>>536 さんも言っていますが、
>>534 さんの言うようにシンボルの中に書いたものでもう一度構成しなおすのが良いようです。
みなさんありがとうございました、わかりにくくてすみません。
>>537 > それぞれに「クリックで自分のalphaが50になる」というスクリプトが書いてあるとします。
残念ながらこの方法が最大のミスだと思う。
シンボルに書くか
ASでわりあてるか
クラスを作っちゃうか
にすれば今回のような問題はおきない。
今後のためにも、クリップアクションは使わない方向で作るように、変えた方がいいと思う。
そして構成しなおすも何も、今シンボル編集画面でAS書けば、配置済みインスタンスMCには
そのASが反映されるよ?
またフレームアクションでMCにfunctionを定義することもできる。
その場合はforループで一括定義するので、ひとつひとつにASを書く必要はない。
どこまで理解してるかわからんので蛇足だったら失礼。
これはクラス使ったほうがよさげな感じしてきた。 >アナログ的な配置 ってことは絵は違うんだろ。 それでASだけは一緒にする必要がある、と。 ヘルプでクラスのとこ探して、一通りやってみたら 閃くんじゃないかな。
>>538-539 わざわざありがとうございます。
ずっと「同じAS」と言っていたんですが、
完全に同じではなく、MC01の場合は「MC01point=1」とかいうように、
微妙に違うとうのも書くのを忘れていました。
なので、単純にシンボル編集画面にAS書いて一括変換というのもできません。
>>539 >>アナログ的な配置
>ってことは絵は違うんだろ。
これも説明が分かりにくくてすみませんが、絵は同じです。
100個のMCの配置の仕方が規則的なら、配置の仕方もプログラムでかけると思うのですが、
規則的ではないので、プログラムで配置するとしたら1つ1つの座標を打たないと配置できないということです。
皆さんの言っているように、ステージ上に
MC.onPress = function(){〜〜〜}
でやるといけそうなのですが、そこで新たな質問です。
練習用につくってみたもので、
ステージ上にインスタンス名が「maru1」「maru2」の二つのMCがあります。
で、ステージのほうに
this["_root"]["maru" + i ].onPress = function(){
this["_root"]["maru" + i ]._alpha=50;
}
と書きました。この状態でステージに「i=1;」と書けば「maru1」を、2ならmaru2を変化させることができましたが、
iを片方しか指定していないので、当然常に片方しか反応しません。
このiをいじって、maru1,maru2両方反応するようにはできないでしょうか?
これができればMCが100個に増えても一括して操作できると思ったのですが。
for(var i = 1;i<=2;i++) _root["maru"+i ].onPress = function() {this._alpha=50;};
フォーは流行語大賞にもなったしな
>>541 すみません、またしても説明不足だったんですが、
this["_root"]["maru" + i ].onPress = function(){
this["_root"]["maru" + i ]._alpha=50;
}
というのは、onPress=functionのときに使ったiを、
中の処理で別の関数の名前を使うときにも使いたいということでした。
(確かにこれならthis使えばいいので悪い例ですみません)
this["_root"]["maru" + i ].onPress = function(){
this["_root"]["maru" + i ]._alpha=50;
this["_root"]["kansu"+ i ]=1;
}
のように。iを中でも使いたいのです。
for(var i = 1;i<=2;i++)
をやると、i=3の固定になってしまいますよね?
maru1をクリックしたとき、maru1を変化させると共にkansu1も変化、
maru2ならkansu2を変化、maru3ならkansu3を、というようにしたいのですがどうにかならないでしょうか。
自分ばっかり質問しっぱなしで悪いなぁ。
>>543 for(var i=0;i<3;i++){
_root["maru"+i].onPress = (function (x) {
return function () {
this._alpha = 50;
_root["kansu"+x] = 1;
}
})(i);
}
>>544 何度もありがとうございます。
今そのまま貼り付けたところalphaが変わらないので、
自分でつけたインスタンス名などチェックしています。
あとreturun functionというのも初耳なので調べてます。
やり方があるということは分かったのでかなりやる気もでてきました。
>>545 やりたいことがいまいち見えないので適切なコメントが出来ない。
たとえば、葉っぱの絵をクリックするとアルファが変わるようにしたいとか云々。。
具体的にどういった動きをするものを作りたいのかを言ってくれれば、
適切なコーディング方法やプログラムの方針をアドバイスできると思う。
>>546 すいません、できかけのファイルをアップできると良いんですが、
大学のほうでつくっているものなのでちょっとできなくて、仮の話になってしまってます。
/*SP01の判定が無し(1)のときにはロールオーバーとロールアウト反応がある*/
cosmo12.nostar001.onRollOver = function();{
if(_root.nostar001SP==0){ this.gotoAndPlay("rollOverframe");/*ロールオーバーフレームへ*/
}
cosmo12.nostar001.onRollOut = function();{
if(_root.nostar001SP==0){/*もし判定前なら・・・*/
this.gotoAndStop("normal");/*ロールアウトで元の1フレに*/
}else if(_root.nostar001SP==1){/*もし×判定後なら・・・*/
this.gotoAndStop("no");/*ロールアウト後もnoフレームへ*/
}
}
/*nostarが押されたときに、判定無し(0)に変化させる。ロールオーバー・アウトはしなくなる*/
cosmo12.nostar001.onPress = function(){
cosmo12.nostar001.gotoAndStop("no");/*クリックされたらnoフレームへ*/
_root.nostar001SP=1;/*クリックされた後の状態*/
_root.cosmo12.nostar001.enabled = false;/*判定をなくす*/
}
すいません、送信ミスして途中で送っちゃいました。
上に書いたのが今あるスクリプトなんですが、
やりたいことは、
・ステージ上に多数(100個以上)のMCがある
・「当たり」のMCが数個、残りの全てが「はずれ」のMC(当たりとはずれ2種類のシンボルをそれぞれコピー)
で、上に書いたのは「はずれ」のMCの処理です。
クリックされるまではrollOver,rollOutの処理があって、
クリックされると「はずれ」の状態になって、以降クリックできなくなります。
>>543 で関数が必要といったのは、ここの処理のためです。
(クリックされると関数が変わって、クリックできなくなる)
で、このはずれの処理を1つ1つに対して書いていると、もの凄い量になってしまうので、
名前に数字をつけて連番にして、うまくまとめられないかと思っているんです。
補足というほどでもないですが、
>>547 であるように、クリックした後のMCの動きは、
MC内に用意されたそれ用のフレームに移動します。
大学生とは思えない質問の下手さ 文章理解力のなさ 応用力のなさ
普段Flashはアニメーションで使っていて、 ASのことはほとんど分かってないので見当違いのことばかり聞いているんでしょうか。 1日このスレ占領してそろそろ邪魔だと思うので、教えてもらったものを調べてやってみます。 みなさんありがとうございました。
確かに質問の仕方がデスマ案件発注する担当者に似てるからちょっと腹がたつ。 説明不足が原因で次から次へと仕様変更・・・
>>553 まさにこういうことをやりたかったです。
わざわざつくってくれて本当にありがとうございます。なんか涙出そうです。
これを使ってなんとかつくってみます。
>>552 自分でも答えてもらう度に新しいこと聞いて申し訳なく思っていました。
プログラムを聞くときって、「これを聞けば応用して出来るだろう」ということを聞くのではなく、
ちょっと説明が長くなっても、やりたいことそのものを聞くのがいいんですね。
勉強になりました&すみませんでした。
mc_aをドラッグで時計方向にのみ回転させて30度ごとに音を鳴らし1周するとmc_bが起動 っていうのはどうやるとできるでしょう
556 :
Now_loading...774KB :2006/11/21(火) 03:41:38 ID:1qtbsq2n
thePath =eval( "_root.theArray"+_root.theNum+"["+this._name+"]"); こんな感じで動的に配列にアクセスしたいのですが、帰ってくるのは undefined…。どうやったら良いか教えてください。お願い致します。
>>556 thePath =eval( "_root.theArray"+_root.theNum)[this._name];
evalはAS3でなくなるから、別の方法も覚えとくといいよっ。
_root["theArray"+_root.theNum][this._name];
e.g. :
var arr1:Array = [1,2,3,4];
var arr2:Array = [5,6,7,8];
var num:Number = 1;
trace(this["arr"+num][0]);
558 :
556 :2006/11/21(火) 16:07:05 ID:vZBKxEUO
>557 ありがとうございました!無事アクセスできました^^
読み込んだFLASHをリロードするにはどうすれば良いですか?
561 :
Now_loading...774KB :2006/11/22(水) 01:39:54 ID:3h03fRgN
環境 FLASH8 アクションスクリプトで、変数名をループで回してやりたいんですが、 以下の文で何が間違っているでしょうか? for (i = 0; i < 100; i++){ this["NEW"+i] = this["OLD"+i]; }
>>562 >何が間違っているでしょうか?
って、何をやりたいの?
>>563 変数名をループで回したいんですよ。
NEW1 = OLD1
NEW2 = OLD2
NEW3 = OLD3
・・・・・・
てな感じです
>>564 とりあえず、
i = 0 から始めるのではなく、
i = 1 から。
566 :
562 :2006/11/22(水) 16:34:57 ID:GW/LNt4o
別の方法で解決しました。 お騒がせしました。
duplicateMovieClipで複数個MCを複製したのはいいのですが、 同時にランダムでアルファ値を設定する記述がわからないです
>>567 dup._alpha = Math.floor(Math.random()*101);
とか。範囲を限定したいときは、
dup._alpha = Math.floor(Math.random()*51)+50;
みたくする。
>>568 ありがとうございます、やってみました
x = 1;
for (i=1; i<=5; i++) {
_root.test0.duplicateMovieClip("chara0"+x, x);
dup._alpha = Math.floor(Math.random()*101);
_root["chara0"+x]._x = 50+i*50;
x++;
}
こうした場合、複製した全てが同じアルファ値になってしまいます
どれもバラバラの値にしたいのです
dup = _root.test0.duplicateMovieClip("chara0"+x, x);
>>571 マウスの位置チェックして、一回前の座標と違ったら、
一回前の座標から、今の座標を引いて、
それになんか定数を掛けて、それを速度にする。
星とかのインスタンス作って、その速度を足していけばいいと
思うよ。
星のMCはちゃんと作らなくても、後からいくらでも修正できるはず。
UFOキャッチャーのようにボタンを押してる間だけ対象を移動させるのってどう記述しますか?
>>573 this.onPress = function(){this.onEnterFrame = function(){subject._x++};};
this.onRelease = function(){this.onEnterFrame = null};
ボタンをヲチして押されたら対象を動かす関数を書く。
577 :
Now_loading...774KB :2006/11/24(金) 22:10:25 ID:nNMknIf9
かなり初歩的な質問ですがどなたかお知恵を貸して下さい。 あるボタンに on (release, keyPress "5") { gotoAndStop(2); } と記述したのですが、Keypressの"5"を変数にしたいのです。 r=5 on (release, keyPress r) { gotoAndStop(2); } って書いたら怒られますよね。"r"にしても、無効なキーコードだと言われますし…。 どう記述すればよいのでしょうか。Keypressの指定先を変数にできませんか。
>>577 キーリスナーを使う
Flash古いなら知らん
>>577 "5"で動いてるなら、
r="5";
だろうとは思うが、お勧めはしない。
>>578 の言うようにリスナー使う。
文字と数値の違いは基本的なことだからしっかり覚えておく。
580 :
Now_loading...774KB :2006/11/25(土) 19:10:20 ID:v7iPAcNl
環境:WinXP-ProでFlashMX2004 attachSound()でアタッチされたwavファイルをボタンのon (release)後、 一定時間(5秒)毎にsetIntervalの関数呼び出しで再生させるASを書 いています。 −フレームアクション− s1_sound = new Sound(); s1_sound.attachSound("borginco.wav"); timer = 5*1000;//5秒設定 function borgAlart() { trace("Play"); trace("this Path= "+this);//パス確認用 _root.s1_sound.start(); //サウンドを再生する _root.s1_sound.setVolume(50); } −ボタンアクション− on (release) { clearInterval(ID);//一旦クリアする ID = setInterval(borgAlart, timer); } この場合、Traceウインドウには Play が5秒間隔で出ますが、音が 鳴りません。パスの間違いがあると思いましたが、this Path= の右辺 は何も無いため、実際の確認はできません。 アドバス願います。
581 :
Now_loading...774KB :2006/11/25(土) 19:37:50 ID:f9oypFNK
>>580 s1_sound = new Sound();
と
_root.s1_sound.start();
とでターゲットが違うかもしれないので確認汁。
それと
s1_sound.attachSound("borginco.wav");
なんか拡張子がついてるけど、
外部読み込みと勘違いしてないよな?
いや、それは全くの的外れかもしれませんが、可能性として指摘させていただきました。
レスの文章だけしか情報がない精神科Q&Aの、これは限界とお考えください。
582 :
580 :2006/11/25(土) 22:20:05 ID:v7iPAcNl
>
>>581 さんきゅうです。パスの確認のため、
function borgAlart() {
trace("Play");
trace("this Path= "+this);
trace("sound Path1= "+_root.s1_sound);
trace("sound Path2= "+this.s1_sound);
}
では、
Play
this Path=
sound Path1= [object Object]
sound Path2=
となり、borgAlart()関数からはs1_soundの場所が分からない状態です。
それと、s1_sound.attachSound("borginco.wav"); の拡張子wavは
私の環境では必要なようです。
583 :
Now_loading...774KB :2006/11/25(土) 22:43:33 ID:MguQ5tmm
Flex SDK 2で var str:String = "さいたさいた桜がさいた"; trace(str.indexOf("桜"), "String.indexOfの場合"); var reg:RegExp = /桜/; var result:* = reg.exec(str); trace(result.index, "RegExp execの戻り値のindexの場合"); どっちも「桜」の位置を検索しているのに、結果が違うのは仕様なんでしょうか? execの方は文字数じゃなくてバイト数で返ってくるの?
584 :
Now_loading...774KB :2006/11/25(土) 23:13:15 ID:f9oypFNK
>>582 trace(_root.s1_sound)
でオブジェクトが返ってるのでここは問題なさそう。
>それと、s1_sound.attachSound("borginco.wav"); の拡張子wavは
>私の環境では必要なようです。
ん?私の環境?
ちゃんと識別子を付けてないのでは?
585 :
Now_loading...774KB :2006/11/26(日) 00:54:05 ID:4tNm0Ibm
コード的な質問じゃないんですが、 ActionScript3.0で三次元ライブラリってどこかにないでしょうか? 自作もしているのですが、空間操作が面倒で…。
586 :
Now_loading...774KB :2006/11/26(日) 10:51:09 ID:rO/xitQd
時間の経過とともに、1個ずつランダム位置に配置される オブジェクト(X)をシーンに10個出現させます。 (最終的に画面に10個表示されている。) つまりランダム処理を行う同じオブジェクトを10回べば済むと思うんですが、 その場合どういった記述にすればいいのでしょうか? 単純に X1、X2、X3・・・・と回数分インスタンス化させればできるのですが 何かスマートじゃありません。 また、回数分一つのインスタンスを呼ぶと呼ばれる度に初期化(?)され、 1個しか表示されません。 解決法お願いします。
>>586 1)attachMovieでインスタンスを作成して初期値をランダムに設定する。
2)setIntervalで指定時間ごとに上記を呼んで10個を超えたら呼ぶのを停止する。
これらができれば出来ると思うが、どの部分がわからんか?
588 :
586 :2006/11/26(日) 11:31:49 ID:rO/xitQd
>>587 >1)attachMovieでインスタンスを作成して初期値をランダムに設定する。
まさにこれが望んでいた答えです。
ありがとうございます。
自己解決しました。 問題は、function borgAlart() {・・・} の s1_sound のパスの設定では なく、s1_soundのボリューム変数の受け渡し方でした。
どうも完成品が重くなる 部分的にじゃなく、全体の数値を整数にするような方法ないかな 整数じゃなくても、計算が軽くなる方法あったら教えてちょ
>>590 無駄を省け。
ステージのサイズ、アルファの多用。
ムービープレビューで見たときのあの棒グラフを参考にするんだ!!
スポイトでパレットから色を取得するみたいにMCの色を変更したいのですが命令はどうすれば良いでしょうか?
>>592 棒グラフってなに・・・?
スマソ、マジでわからん
スクリプトが重いのかグラフィックが重いのかはっきりすべし
>>593 getPixel
>>594 ムービープレビューした状態で、メニューから
表示→プロファイラ
を選択してみてー
↓雪が降るスクリプトです。マウスに反応して雪のインスタンスが動きます これをマウスに反応させずにただ雪を降らせるだけにしたいんです ご教授お願いします width = 550; height = 400; total = 200; for (var t = 0; t != total; t++) { var mc = _root.attachMovie("snowflake", "snowflake"+t, _root.getNextHighestDepth()); mc._x = (Math.random()*(width+20))-10; mc._y = (Math.random()*(height+20))-10; mc.yspeed = (Math.random()*1.75)+0.25; mc.speed = (Math.random()*3)+2; mc._xscale = mc._yscale=(mc.speed+mc.yspeed)*10; mc.onEnterFrame = function() { var angle = Math.atan2(_root._xmouse-(width/2), _root._ymouse)+1.5707963267949; this._y += Math.sin(angle)*this.speed+this.yspeed; this._x += Math.cos(angle)*this.speed; if (this._x>width+10) { this._x = -10; } else if (this._x<0-10) { this._x = width+10; } if (this._y>height+10) { this._y = -10; } else if (this._y<0-10) { this._y = height+10; } }; }
winXP 2004MX ストップウォッチのAsを勉強しています。 1フレーム目にthis.stop(); とstartのボタンインスタンス 2フレーム目に time = getTimer(); text = Math.floor(time/1000/60)+":"; // 分 if (Math.floor(time/1000%60)<10) { text += "0"; } text += Math.floor(time/1000%60)+":"; // 秒 if (Math.floor(time%1000)<100) { hyouji += "0"; } if (Math.floor(time%1000)<10) { text += "0"; } text += time%1000; // ミリ秒 と書いて、3フレーム目にstopボタンを置いています。 スタートストップは動作させることが出来たのですが スタート時に0から始める方法で悩んでいます。 初歩的な質問ですいませんがお教え頂けると幸いです。
601 :
599 :2006/11/28(火) 02:05:07 ID:8VupKE9P
>>600 DLさせて頂きました
勉強させて頂きます
ありがとうございます!
602 :
597 :2006/11/28(火) 09:13:38 ID:9c+56/2e
初心者なので恐縮なんですが、 フラッシュから指令を出してブラウザを閉じるようにしたいんですが、 ボタンに on (release) {getURL("JavaScript:close=window.close();void(0);");} と記述したところ、テスト用に作った簡単なファイルでは上手く閉じたのですが、 本番用のちょっと重いファイルでは何故か閉じません。 インスタンスをコピペで持ってきたので同じはずなんですが。。。 同じスクリプトなのにどうして出来るのと出来ないのがあるんでしょうか? また、もっと確実な記述の仕方とかありますか? 教えて頂けると嬉しいです!
>>603 同じスクリプトは同じ動きをします。違ったら大事です。
プログラムが違うから、つまりコーディングが違うから、異なった動きをするのでしょう。
本番用のプログラムでのコーディングが悪いからとしか言えないよ。
605 :
Now_loading...774KB :2006/11/29(水) 12:54:16 ID:Is3ds3Wi
Flash 8 の v2 コンポーネントなんですが、よくあるチュートリアル通り に DataSet と DataGrid の selectedIndex を bind したところ DataGrid の選択行に色が付かない現象が出ます。 bind する際の値を調べてみたところ、 DataGrid → DataSet … OK DataSet → DataGrid … undefined になる模様 バグかな…と思うんですが同様の経験をされた方おられますかね。
606 :
603 :2006/11/29(水) 23:51:04 ID:sgTKnvVz
>>604 ありがとうございます。
テスト用が上手くいったということは
スクリプトの記述自体は正しいということですよね。
本番用はどこかのスクリプトがひっかかって上手く働かないというところなんでしょうか。
でも閉じる用のボタンインスタンスは独立したもので上記の記述しかしてないし、
他のアクションもgotoAndPlay();ぐらいしか使ってないんだけどなあ。。。
少しすれ違いのような気もしますが、質問させてください。 秀和システムのAcitonScript逆引き大全を買おうと思ったのですが どこにも置いてないんですよね・・・ネット見ても取り扱い不可になってるし orz 近々新しいのでも出るのでしょうか?
秀和システムに問い合わせたらいいじゃない
これ? Flash ActionScript逆引き大全550の極意 (単行本) 単行本: 590ページ 出版社: 秀和システム; 増補改訂版版 (2005/04) ASIN: 4798010502 サイズ (cm): 21 x 15 AmazonでISBN検索したら古本でいくつかあったよ 和書で「4798010502」を検索してみ
価格見て違和感覚えたから詳細見たけど、1000円くらいのプレミア付いてるんだね 売らないで持ってて良かった
attachMovieで「image」とインスタンス名をつけてrootに配置したものを、 _root.image.onPress = function(){ ・・・・・ } と、rootのフレームにスクリプトを書いても上手くいきません。 パスの指定が間違っているのでしょうか? あるいはattachMovieで配置したものにonPressなどの命令は使えないのでしょうか? もしわかる方がいらっしゃいましたらご教授よろしくお願いします。 flashは2004MXで、WindowsXPです。
>>611 考えられる原因
リンケージ名が間違ってる
インスタンス名が間違ってる(attach時に、文字列で指定してない)(つまり、_root.attachMovie("image","image",1);とすべきところを_root.attachMovie("image",image,1);と呼んでる。
パスが間違ってる(本当に_rootにattachしたのか)
上手くいかない、というのはonPressが呼ばれてるのか呼ばれてないのか(traceで確認する)
>パスの指定が間違っているのでしょうか?
自分で確認しろ
>attachMovieで配置したものにonPressなどの命令は使えないのでしょうか?
使える
推奨デバック
kakunin=_root.attach〜、というふうにattach時の返り値を変数に代入してそれを
trace(kakunin);確認してみる
_root.image.onPress=function(){
trace("onPress");
}
とかもしてみる
とにかく、どこでつまづいてるのかを明確にする
613 :
611 :2006/12/01(金) 15:02:36 ID:c6wZ1mC6
>>612 ありがとうございます。
ご指摘されたリンケージ名とインスタンス名についてですが、とくに間違っておらず、
またデバッグしてみたところ、_level0.imageとなっており、ちゃんとrootに配置されているようなのです。
その上で、
_root.image.onPress = function(){
trace("onPress");
}
としても反応しないという次第なのです。
そもそもこのスクリプトが何をしようとしているかと言いますと、
まずloadMovieで画像をあるムービークリップ(orijinalimage)に読み込み、
そのムービークリップをリンケージ名(imagemc)をつけた別のムービークリップに配置し、
その上で、そのムービークリップをattachMovieしているのです。
以下がスクリプトです。
newImage = _root.attachMovie("imagemc", "image"+i, 100+i);
newImage.orijinalimage.loadMovie(imgurl[i]);
ムービークリップを入れ子構造にしていることが問題なのでしょうか?
もし何かありましたらご指摘よろしくお願いします。
614 :
Now_loading...774KB :2006/12/01(金) 17:12:01 ID:SDM+TGnq
すみません、質問させて下さい。 外部jpgとテキストを読み込ませ、 テキストに<a href="" target="_blank">で記述し、 該当箇所をクリックすると別窓で別のページを開くものを作りたいのですが、、 ポインタは変わるのにページが開かない状態です (右クリックすると「開く」などの選択はできます) お分かりになりましたら、教えて頂けるとても助かります。 onClipEvent (load) { _parent.createEmptyMovieClip("target_mc10",1); _parent.target_mc10.loadMovie("image/b.jpg"); _parent.target_mc10._x = 0; _parent._target_mc10._y = 0; _parent.createEmptyMovieClip("target_mc5",2); _parent.target_mc5.loadMovie("image/a.jpg"); _parent.target_mc5._x = 439; _parent._target_mc5._y = 0; System.useCodepage = true; loadVariables("image/c.txt",_parent); } onClipEvent(enterFrame){ _parent.createTextField("_txt",5,10,298,240,100); _parent._txt.border = false; _parent._txt.wordWrap = true; _parent._txt.html = true; _parent._txt.selectable = false; _parent._txt.htmlText =_parent.main; }
>>614 まずenterFrameイベントを理解してください
616 :
携帯のフラッシュ :2006/12/01(金) 22:16:28 ID:ubpE+ncW
ここでしても良い質問なのか少々躊躇いましたが、 出来るか否かだけでも知ることができれば本当に助かるのでご指南の程お願い致します。 最近よく見かける携帯の待ち受けフラッシュで時間を取得して表示するタイプのものは よく見かけるのですが、携帯の電波状況を取得してそれに連動した画像又は動画を表示させることは出来るのでしょうか。 携帯の機種はなどは問いません。 また、既に詳しく掲載されたサイトがあれば教えて頂けるとさらに助かります。
>>613 >loadMovieで画像をあるムービークリップ(orijinalimage)に読み込み、
>そのムービークリップをリンケージ名(imagemc)をつけた別のムービークリップに配置
最初imagemcの中にorijinalimageはないってこと?
attachしたMCの中にorijinalimageを後から配置してもリンケージ名をつけたもとのMCの中身はかわんないよ。
_level0.imageが存在するのにonPressが反応しないってのはありえないとおもうよ。
imageが君の思っていたMCと別のものだったとか。_root.image._width=500とかして確認してみては?
>>616 status = FSCommand2( "GetSignalLevel" ) だと思う。
adobeのサイトにFlash liteの説明書があると思うからそれ落とすといい。
(俺が落としたのはMacromediaのときだったけど)
>>613 やりたい事があっているかどうかわかんないけど
container = _root.createEmptyMovieClip("container", 1);
image = container.attachMovie("image", "image", 1);
image.loadMovie("image.jpg");
container.onPress = function()
{
trace("container onPress");
}
loadMovieをやってしまうと、何故か他のメソッドを定義できない。
読み込みが完了すれば、出来るらしいけど、よくわからない。
なのでフレーム用のmc(今回は"container")を作り、そいつにメソッドを定義すると上手く行く
619 :
611 :2006/12/02(土) 00:43:58 ID:VKz5nbxx
>>617 ,618
ご丁寧にありがとうございます。
先ほど解決しました。
問題はとても単純で、attachMovieを行ったfunctionとは別の場所に、
_root.image.onPress = function(){
trace("onPress");
}
と予め書いていたため、まだ存在しないインスタンスimageが参照され、
無反応だったという次第のようです。
本当にまぬけなミスで、丁寧にご教授していただいたのに申し訳なかったです。
どうもありがとうございました。
>>619 まぬけってことはないけど、解決してよかったね。
>>621 え、でも誰でもそんくらいのミスはするでしょ。
またーりなのは駄目かな。
俺もマターリな流れのほうがいいんだけど 他スレとか見ても最近冷たい人が多いからさ…
2ちゃんでも腰の低い質問者にはみんな優しいと思うけどな。 ただmixiとかでも回答者をサポセン扱いする高圧的な質問者が増えてる気がする。
ASじゃないっぽいけど、 バイナリの仕様っていうか、パブリッシュした後のファイルの仕様 ってどこかで公開されてた?
626 :
Now_loading...774KB :2006/12/03(日) 08:48:56 ID:ZTkjX4QU
>>625 swfファイルの仕様ならアドビラボで開発者用に公開されてる
627 :
Now_loading...774KB :2006/12/03(日) 10:02:02 ID:xdpox0UE
済みません、お聞きしたいのですが、 アクションスクリプトで、COUNTを設定したいんですが、FLASHMXで出来るんでしょうか…?
628 :
Now_loading...774KB :2006/12/03(日) 16:26:52 ID:XC1nurtG
何のカウントやねん
629 :
Now_loading...774KB :2006/12/03(日) 17:16:23 ID:54f3iZgb
FLEXとactionscriptの質問ってここでいいですか?
631 :
Now_loading...774KB :2006/12/03(日) 20:41:43 ID:ujMSDO6s
>>628 済みません…
FLASHMXを使っているのですが…
クリックした回数で違うイベント発生させたいんですが、
買った本には
on(press){
count +=1
gotoAndstop(数字)
と設定汁、と書いてあるんですがそれ以上の事が書いていなくて…
どなたか、教えていただけないでしょうか…??
632 :
Now_loading...774KB :2006/12/03(日) 21:04:45 ID:ZTkjX4QU
>>631 こう書いたらわかる?
on(press){
count +=1;
if(count == 1) gotoAndstop(1);
else if(count == 2) gotoAndstop(2);
else if(count == 3) gotoAndstop(3);
else if(count == 4) gotoAndstop(4);
else if(count == 5) gotoAndstop(5);
else if(count == 6) gotoAndstop(6);
}
とまあ長々しく書くのもあれなので
on(press){
count +=1;
gotoAndstop(count);
}
634 :
Now_loading...774KB :2006/12/03(日) 21:38:18 ID:ujMSDO6s
>>632 あわわありがとうございます…!
えっと…今ちょっとやってみたんですが、
on(press){
count +=1; ←これはどうやって置くんでしょうか…!
gotoAndstop(count);
}
スクリプトの中から探してみたんですが見当たらなくて…;;
>>634 置くってどういういみ?
count +=1
はcountという変数に1を足すって言う意味。++演算子と同じ。
636 :
Now_loading...774KB :2006/12/03(日) 23:01:24 ID:ujMSDO6s
>>635 済みません…初心者丸出しですね;;
えっと…置くって言ったのは、
【アクション-フレーム】っていうフォルダにある…
【スクリプトウィンドウ】にスクリプトを入れるってことです…!;;
アクションスクリプトの中にcountって入力するんでしょうか…??
演算子…??
FLASHでお絵かきツールを作ったのですが、描き終えた絵をBMPやPNG等のラスタイメージにして保存する命令ってありますか?
638 :
Now_loading...774KB :2006/12/03(日) 23:30:40 ID:jZ9zYl1q
ソフト:FlashMX2004_Ver7(AS2.0、Player6) OS:WinXP-Pro
この環境で扱える小さな実数の数値を表現するにはどうしたらいいでしょうか?
Javaの場合は、
ttp://www.geocities.jp/supermisosan/bairstowjava.html のように
10のマイナス5乗を double eps=1.0e-5; と書けますが、Flashの場合はこのような
表現は無いのでしょうか?
ちなみに当方の環境で
eps = new Number(1.0e-15);
trace("EPS= "+eps);
と書くと、EPS= 1e-15 と出力されます。
まあとりあえず countっていうのは何か特別な機能があるものではなく、単なる変数名。 aとかbとかcとか、別の名前を使っても同じ。 countというのを関数か何かと勘違いしているようだったので。 演算子というのは数値を足したり引いたりするための記号。 +(プラス)、−(マイナス)、*(乗法)、/(除法)など。 >アクションスクリプトの中にcountって入力するんでしょうか…?? on(press){ //押したら count +=1; //countという変数に1を足す gotoAndstop(count); //countに入っている数値へ飛ぶ } とりあえずこのASの読解をしてごらん。
640 :
638 :2006/12/04(月) 01:04:00 ID:9g/QFJ63
自己レスです eps = 1.0e-5; trace("EPS= "+eps); sa = 1-eps; trace("sa= "+sa); ならば、 EPS= 0.00001 sa= 0.99999 となり、問題有りませんが eps = 1.0e-15; とすると EPS= 1e-15 sa= 0.999999999999999 です。 eps = 1.0e-10; も同じく EPS= 1e-10 です。どうやら eps = 1.0e-6; 以下は小数点の形式では表示されないようです。
641 :
Now_loading...774KB :2006/12/04(月) 09:12:24 ID:48z48kzi
>>639 はい〜;;わかりました!
ちょっと頑張ってみます!
お手数おかけして済みませんでした;;
ありがとうございました〜〜〜!!><
642 :
616 :2006/12/04(月) 12:25:11 ID:bQu/b/LG
>>617 諸事情により遅レス申し訳ないです。
おかげ様で解決いたしました。
ありがとうございます!
643 :
Now_loading...774KB :2006/12/04(月) 15:50:19 ID:bGM31o6/
ActionScriptで積分できませんか? どんな方法でもいいので。
644 :
Now_loading...774KB :2006/12/04(月) 18:30:06 ID:z0NGcUNA
>> 637 ActionScriptから直接ファイルに保存することはできないような気がします。 ActionScript3.0とCGIを組み合わせて @、[AS側]URLRequestで画像とファイル名をCGIに送信。 A、[CGI側]送られてきたデータ受信。画像ファイル作ってサーバー上に保存 B、[AS側]FileReferenceでCGIが保存したサーバー上ファイルをダウンロード とかやればできるかもしれません。
645 :
Now_loading...774KB :2006/12/05(火) 00:11:10 ID:ldnu2fvP
646 :
Now_loading...774KB :2006/12/05(火) 18:56:26 ID:GXt4Wl0e
スミマセン。 質問なんですが、 大量の変数を持っているとして、 検索用の「テキスト入力窓」と、「結果表示窓」を画面に用意します。 「テキスト入力窓」に変数を入力し、 「結果表示窓」に対応した値を表示させるには、 どうActionScriptを記述すればよいですか? 例えば、a=12であれば 「a」と入力した時、結果表示窓に「12」と表示させたいんです。
テキスト入力窓の変数をtextInだとするでしょ trace(_root[textIn]);
ウインドウコンポーネントに、ボタンコンポーネント等を関連付けるには どうすればよいですか?
649 :
646 :2006/12/05(火) 19:20:47 ID:GXt4Wl0e
>>647 ありがとうございます。
試してみたのですが、よく分かりませんでした。
「検索実行ボタンjikkou」を用意して、
jikkou.onRelease = function(){
kekka=trace(_root[textIn]);
}
で、いいのですか?
指定したムービークリップが動いているか止まっているか判定するには、 どうしたらいいんでしょうか?
>>649 traceっていうのは引数を出力ウィンドウに表示する関数ね
だからその場合は
jikkou.onRelease = function(){
kekka=_root[textIn];
}
でいいよ
652 :
Now_loading...774KB :2006/12/05(火) 20:45:20 ID:ABPs/ieD
fcsを使ったflvのストリーミング配信で NetStream.seek後、NetStream.timeで正確な再生ヘッドの位置が取得できなく 困っております。 例えば、10fpsでキーフレーム間隔が50のflvを再生したとします。 NetStream.seek(3)とすると、一番近いキーフレームがある50フレームから再生が再開するのですが NetStream.timeで返ってくる値は3秒から再開してしまいます。 どなたか同じような状況を解決された方、ご教授ねがいます。
>>650 回答でなくてすまんが、そういう判定が必要な時点で設計が悪いのではないか?
654 :
646 :2006/12/05(火) 20:59:43 ID:GXt4Wl0e
>>651 ありがとうございました。
助かりました。
655 :
Now_loading...774KB :2006/12/06(水) 00:07:19 ID:mFLerjrI
>>652 世の中、分からないことは多いもの。
そして、自分の知らない知識を手に入れるための手っ取り早い方法は、誰かに教えてもらうこと。
質問を投げれば誰かが答えてくれる、そんなサイトもあちこちで繁盛しています。
そういった不特定多数の場に質問を投げるときには、なぜか「定番」のフレーズがあります。
それが今回の表題、「ご教授願います」あるいは「ご教授ください」といった言い回しです。
単に「教えてください」を丁寧にしただけの感覚で気軽に使われているようですが、果たしてそれで良いのでしょうか。
日本語には、確かに「教授する」という言葉があります。
その意味は、文字通り「教え授ける」こと。
一見すると、何も問題ないように感じられるかもしれません。
しかし、本来「教授」とは、学問や技芸などをきっちりと体系立てて教える場面に使われる言葉です。
それは、大学や高専で教員の最高位にいる人を「教授」と呼ぶことにもあらわれています。
単に「教える」を丁寧にしただけとは違う、「重い」言葉となります。
掲示板に質問を書き込んでいる人は、本当に「教授」を希望しているのでしょうか。
高度で難解な講義に付いていく勇気と自信がありますか?
本当にそうならば、「ご教授願います」を誤字とは言いません。
掲示板というツールが「教授」にふさわしいかどうかは、また別問題ですが。
コピペじゃなかったら、よく考えた文だな。 暇人すぎだろw
>>652 一番近いフレームから再生されるなら、
.timeで取得した値を最寄のフレームの秒数に直せばいいんじゃない?
これならフレームレートがわかればできる。
役立たずほど意味のない説教垂れたがる。
8basicで勉強中の者です。
特定の場所をクリックすることでカウントを貯め、貯めたカウントを視覚表現したり、
そのカウントの数値でムービーが切り替わったりするようなものを作りたいと思っています。
とりあえず、自分のできる範囲でやったらこのようになりましたが、
http://up.spawn.jp/file/up56399.zip.html (星や、赤丸をクリックすることでカウントが貯まり、黄色い丸が色が変わったり膨張して、
最終的には消え、終了と表示される画面になります)
現状ではgotoで行ったりきたりを繰り返し続けているので、他の処理を同じような記述を
つらつら並べるより、もっと冴えたやり方があるのではないかなと思いまして、
なにかヒントでもいいので教えていただけないでしょうか。
660 :
659 :2006/12/06(水) 10:50:25 ID:dbRUw1m4
すいません変な文でした。 >他の処理を同じような記述を 他の処理をさせると重くなりそうな気がしますし、同じような記述を と読み替えてください。
661 :
Now_loading...774KB :2006/12/06(水) 15:51:00 ID:AP29C+q2
シンボルでマウスオーバーすると gotoAndPlayするインスタンス(仮にaaaとします)を作成して それを_root.mc1の中にaaaを配置して そのaaaをduplicateMovieClipで複製しています。 でも、それを書き出したときにはマウスオーバーが反応しません。 mc1とaaaはドラッグで一緒に動くようにしたいので同じところじゃないと いけないですよね? どうすれば反応するようになるか、ご指導ください。
どこをgotoAndPlayしてるかがわからない。 _rootだったら、普通に_root.gotoAndPlayで動くと思いますが。
親となっているムービークリップをplay()したりstop()したときに、 子となっているムービークリップなどをまとめてplay()したりstop()したりできるんでしょうか?
ライブラリィに読み込んであるJPEG画像データを表示させる手順について教えてください。 JPEGデータを手動でシンボルに変換して、リンケージの識別子を設定すれば attachMovie を使って画面に表示できるのですが、 JPEGデータが多いため、手動でのシンボルへの変換がちょっと大変です。 できればシンボルへの変換を行わずに(タイプがビットマップデータのまま) ライブラリィに読み込んであるJPEG画像データを表示させたいのですが、 方法はありませんでしょうか。
>>663 MCのタイムラインは独立しているので、連番付けするなりして
子それぞれに操作する。
>>664 名前も付けずにASでの操作は不可能。
作成時にフレームに配置したMC作るなり、外部読み込みにしたりする。
666 :
Flash8です :2006/12/07(木) 09:49:21 ID:p6D80rEg
ロールオーバーするとアンダーバーがビヨーンって伸びて(フレーム20) ロールアウトするとアンダーバーが引っ込むんで、 クリックするとフレーム21に飛ぶって感じをつくりたいのですが、 class tesuto extends MovieClip { var rollover:Boolean = false; function onLoad() { stop(); } function onRollOver() { rollover = true; onEnterFrame = animation; } function onRollOut() { rollover = false; onEnterFrame = animation; } function animation() { if (rollover) { nextFrame(); } else { prevFrame(); } if ((_currentframe == 1) || (_currentframe == 20)) { delete onEnterFrame; } } } これにreleaseをどこにどういれたらいいですか? どうやってもフレーム20と21を繰り返しちゃってできません。 多分、フレーム21でも prevFrame が機能しちゃってると思います。 よろしくお願いします。
>>663 for...inを使えばmcに名前があろうがなかろうが何個あろうが操作できるんだお
mcの階層に応じてfor...inは増やすんだお
for ( var i1 in _root ){
var tag1=_root[ i1 ];
if ( tag1._currentframe==1 ) tag1.play();
for ( var i2 in tag1 ){
var tag2=tag1[ i2 ];
if ( tag2._currentframe==1 ) tag2.play();
for ( var i3 in tag2 ){
var tag3=tag2[ i3 ];
if ( tag3._currentframe==1 ) tag3.play();
}
}
}
668 :
Now_loading...774KB :2006/12/07(木) 13:25:15 ID:b47V2d0z
【やりたいこと】 FLASHを入力デバイスとして使用して、 データ(例:品名=みかん、価格=50、個数=20、登録番号=0012) をdatファイルに追加登録していきたい。 【datファイル「data.dat」の中身】 「みかん,50,20,0012 りんご,100,10,0013 もも,200,5,,0014 : : : 」 【FLASH】 4つ(品名、価格、個数、登録番号)のテキスト入力窓(変数付き)と「登録ボタンtouroku」を用意。 System.useCodepage = true; CGIFIle = "save.cgi"; touroku.onRelease = function(){ mySendVars = new LoadVars(); writedata = hinmei+","+kakaku+","+kosuu+","+tourokubangou; mySendVars.senddata = writedata; mySendVars.sendAndLoad(CGIFile,myLoadVars,"POST"); }; stop();
669 :
668 :2006/12/07(木) 13:26:27 ID:b47V2d0z
【CGIファイル】 #!/usr/local/bin/perl $logfile="./data.dat"; if ($ENV{'REQUEST_METHOD'} eq "POST"){ read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); } if ($ENV{'REQUEST_METHOD'} eq "GET"){ $buffer = $ENV{'QUERY_STRING'}; } @getlist = split(/&/,$buffer); foreach (@getlist){ ($key,$value) = split(/=/,$_); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $getdata{$key}=$value; } open(IN,"$logfile"); @loaddata = <IN>; chomp($loaddata); close(IN); open(OUT,">$logfile"); $length = @loaddata; for($=0;$i==$length;$i++){ print OUT "$loaddata[$i]"; print OUT "$getdata{'senddata'}\n"; } close(OUT); exit;
670 :
Now_loading...774KB :2006/12/07(木) 13:27:13 ID:b47V2d0z
「登録ボタン」押した後にdatファイル開いても登録されてません。 何か、基本的なことを間違えているんだと思います。 参考書片手に悪戦苦闘してる初心者です・・・。 長くてスマソ。
>>668 問題を切り分けよう。
登録ボタン押した段階で、hinmeiやkakakuといった変数にちゃんとアクセスできてんのか?
CGIは単体で動かせば問題ないのか?
672 :
668 :2006/12/07(木) 13:56:53 ID:b47V2d0z
>>671 アドバイスありがとうございます。
登録ボタンを押した段階で、
別窓に変数の値を出力させることで
すべての変数にアクセス出来ている事が確認できました。
CGIを単体で動かす方法がわからないのですが・・・。
サーバーのsave.cgiに直接IEでアクセスしたところ、
「問題があるため表示できません。」でした・・・orz。
>>668 for文の初期値が
$=0ってなってますよ
674 :
668 :2006/12/07(木) 20:35:15 ID:b47V2d0z
>>673 あ、ホントだ!
ありがとうございます。
$i=0に修正しました。
・・・それでも、ダメでした。
まだなんかミスがあるみたいですorz。
もしかしてsendAndLoadって
受信するものもないと使っちゃダメなんでしょうか?
今回みたいに送信するだけの用途でも使えますか?
675 :
664 :2006/12/07(木) 21:14:09 ID:uVX58Mbr
>>665 レスサンクスです。
やはり無理ですか。
手動でコツコツ作業することにします・・・
>>668 @loaddata = <IN>;
chomp($loaddata);
本題とは関係ないです(と思います)が、
これは意味がないですね。($loaddataが使われていないので)
@loaddata = <IN>;
chomp(@loaddata);
とか、
chomp(@loaddata = <IN>);
と書くみたいです。
$length = @loaddata;
for($=0;$i==$length;$i++){
print OUT "$loaddata[$i]";
print OUT "$getdata{'senddata'}\n";
}
この部分を
$length = @loaddata;
for($i=0;$i<$length;$i++){
print OUT "$loaddata[$i]\n";
}
print OUT "$getdata{'senddata'}\n";
とするのが、この場合正しいでしょう。
でも、
print OUT join("\n", @loaddata);
print OUT "$getdata{'senddata'}\n";
とした方が楽なような……?
677 :
Now_loading...774KB :2006/12/07(木) 23:03:06 ID:b47V2d0z
>>676 ありがとうございます!
なるほど、いろいろ勉強になります。
さっそく修正しました。
しかし、根本的な解決はまだです・・・。
うーーーん。
以前こちらで質問させて頂いた603です。 603の質問内容はフラッシュの書き出しのバージョンを Flash Player8から7へ落とすことによって解決致しました。 その節はありがとうございました。 それで、実はまた困ってます。 フルスクリーンでフラッシュを見せたいのですが、 Stage.scaleMode="noScale"; Stage.align = ""; と記述して、フラッシュが適正なサイズで見え、 かつ真ん中へ配置するようにしたのですが、 そうすると四方はステージの大きさの外のものが見えるようになり、 この見える範囲は個々の人のモニターの環境によって 広かったり狭かったりしますよね? ブラウザを閉じるボタンのムービークリップがあるのですが、 このボタンだけをモニターの環境に左右されず、 画面の右上に配置することって可能でしょうか? 上記のスクリプトだと右上に配置しても端っこへいきません。 私の作っているフラッシュは画面いっぱいでアニメーションするので htmlでフレームを分けるとかはしたくないので 出来ればフラッシュ中で処理したいのです。 教えてちゃんで申し訳ないのですが、もし可能でしたら そのスクリプトを教えてください。お願い致します。
Stage.align = "TL"; にして画面幅取得してMCの_xに入れる。 というかフルスクリーンは迷惑極まりない。
>>678 うわ。気がついたら解説の絵まで作ってた....。
暇だな俺。
http://www-2ch.net:8080/up/download/1165505097878103.i3eEsl ボタンにこんな感じのスクリプト。
---------------------------------------------------
var movieWidth = 作ってるムービーの横幅;
var movieHeight = 作ってるムービーの横幅;
function onResize() {
// 右上の座標をゲット
var ltx = Math.floor(movieWidth + ((Stage.width - movieWidth) / 2));
var lty = Math.floor(0 - ((Stage.height - movieHeight) /2);
// 常に右端から10pxの間隔を開ける
this._x = ltx - this._width - 10;
this._y = lty + this._height + 10;
}
onResize();
Stage.addListener(this);
---------------------------------------------------
>>679 俺も Stage.align = "TL" にした方がいいと思う。計算メンドクセ。
そして、ウィンドウサイズが奇数の時って右、左、どっちのピクセルが加算されんだろ...。
少し長いんですがお願いします。 var intervalId1:Number; var intervalId2:Number; function setInt():Void{ if(_root.mc._x < 0){ _root.mc._x += 7; } if(_root.mc._x >= 0){ clearInterval(intervalId1); } updateAfterEvent(); } function downInt():Void{ if(_root.mc._x > -100){ _root.mc._x -= 7; } if(_root.mc._x <= -100){ clearInterval(intervalId2); } updateAfterEvent(); } //続く
_root.mc.mc2.onRollOver = function(){ clearInterval(intervalId1); clearInterval(intervalId2); intervalId = setInterval(setInt,"setInt", 1); } _root.mc.mc2.onRollOut = function(){ if(_root._xmouse >= 100){ ←※ clearInterval(intervalId1); clearInterval(intervalId2); intervalId2 = setInterval(downInt,"downInt", 1); } } ステージの端にある mc.mc2 の階層にあるMovieClipが フォーカスインでステージに、X座標を+7づつ移動しながら出てくる。 フォーカスアウトで初期位置に戻る。 というスクリプトなんですが、MCがちらついて困っています。 12fpsで_xを+7づつ、このスピードを維持したまま、このちらつきを抑えたいのですが 方法がわかりません。_x += 1にするとちらつきが見えないので 恐らくMCを出すfunctionをMCを隠すfunctionが競合しているんだと思っています。 ※mc2の上の階層にボタンが置いてあり、ボタンにフォーカスが当たっても mcがフォーカスアウトしてしまうので、 if(_root._xmouse >= 100){ として フォーカスが外れて、 尚且つフォーカスがボタン上でなく、ステージ上という風にしています。
>>668 サーバからのレスポンスいらないなら、sendでいいんじゃない?
mySendVarsがどこで宣言されているのかも気になるけど。
684 :
668 :2006/12/08(金) 20:00:29 ID:JqgGBaLa
>>683 ありがとうございます。
sendを使ってみたらできました!
ただしsendを使用すると、FLASHからCGIページに飛んでしまうので
最終的にはsendAndLoadを使用しました。
どうやらFLASHでの
mySendVars.sendAndLoad(CGIFile,myLoadVars,"POST");
がまずかったみたいで、
mySendVars.sendAndLoad("save2.cgi",myLoadVars,"POST");
という風に、直接アドレスを記述するとうまくいきました。
ただ、問題は残ってまして、
追記されたdatファイルをnotepadで開くと、
「みかん,50,20,0012
りんご,100,10,0013
もも,200,5,,0014
すいか,350,20,0015■オレンジ,60,20,0016■」
みたいになってしまいます。
(すいか以降が追記されたデータです。)
追記されたデータの文末が改行されずに、
細長い黒四角形ができてしまいました。
\nの記述がまずいんでしょうか?
>>684 Windowsの改行コードは\r\nだから、notepadだと\nは改行コードと判断しない。
Macだと\rだけだったりするから改行コードってややこしい。
686 :
668 :2006/12/08(金) 22:57:37 ID:JqgGBaLa
>>685 なるほど!そういうことですか。
datファイルをダウンロードして
TeraPadで開くとちゃんと改行されてました。
正しいデータが出来ていたというわけですね。
これで解決しました。
皆さん、どうもありがとうございました。
おかげでなんとか形になりそうです。
すごく勉強になりました。
687 :
678 :2006/12/08(金) 23:53:28 ID:AMejAFWs
>>680 さま!
神のような解説をありがとうございます!!
図解までして頂いてとっても解り易かったです!
679さんもどうもありがとう!
おかげで完成しました!
アクションスクリプトはまだまだ初心者で、
辞典を片手にやってますが、わからないことばかりで難しいです。
もっと勉強して頑張りたいと思います。
本当にありがとうございました!
時間ごとに表示するMCを変更するにはどうしたら良いでしょうか?
689 :
688 :2006/12/10(日) 01:17:16 ID:tugFxUYm
自己解決しました
690 :
Now_loading...774KB :2006/12/10(日) 22:29:14 ID:5v7HeHY8
ある配列hairetsu2が存在する時に、 c = hairetsu2[5];ではcに値がきちんと呼び出せるんですが、 aaa=2 bbb=5として、 c = _root["hairetsu"+ aaa + "[" + bbb + "]" ];では値が呼び出せず困っています。 c = _root["hairetsu"+ aaa + [bbb]];ではエラーがでます。 何か書式がまずいのでしょうか? 教えて下さい。
>>690 c = _root["hairetsu"+aaa][bbb];
かもよ。
692 :
690 :2006/12/10(日) 22:55:30 ID:5v7HeHY8
>>691 出来ました!
ありがとうございますっ!
なんで_root使うんだ
694 :
690 :2006/12/10(日) 23:09:49 ID:5v7HeHY8
>>693 _root使わずにもっと簡単に表現できるんですか?
よかったら教えて下さい。
いや、690に限ったことじゃなく、 絶対パスだと親swfに読み込まれたとき不具合起きないか?
すいません、超初心者なんですが教えてください!! 現在再生中のムービーを再生/停止/一時停止するムービーを作っています。 再生はGoto and Playでなんとかなるんですが他がどうにもわかりません。 どうすればヨイですか!?
>>695 MovieClip._lockroot使えば大丈夫じゃない?
>>696 Goto and PlayじゃなくてgotoAndPlayね。
一時停止はstop()、再生はplay()、停止はgotoAndStop(1)
698 :
690 :2006/12/11(月) 00:29:26 ID:N1tC+3vr
>>695 なるほど、そういうことですね。
まだそこまで複雑なものを作った事がないので、
絶対パスの欠点をそこまで考慮していませんでした。
その辺、気をつけながら作ることにしますノシ
699 :
696 :2006/12/11(月) 00:33:37 ID:at/6mlUm
再生/停止はできました、ありがとうございます!! 一時停止なんですが、一時停止したところから再生を再開できるようにしたいのですが。
WinXP, Flash MXです。 着せ替えのようなFlashを作成しています。 ●ステージ上に体mcが複数置いてある ●体mcの周りに、洋服や帽子などのパーツmcがたくさん配置してある ●パーツmcをpressしたとき、真下に複製を作りたい ただし、体以外でpressしたときだけ。体の上に置いたパーツmcを pressしても何も起こらない。--->これが上手くできません。。。 ●体以外でパーツmcがreleaseされたときには、そのパーツmcを削除する というような作りです。 パーツmcに、 on (press) { num++; this.startDrag(true); this.swapDepths(num); _root.パーツ_mc.duplicateMovieClip("パーツ_mc"+num, num); _root["パーツ_mc"+num]._x = 50; _root["パーツ_mc"+num]._y = 200; } と書いてみましたが、これだと、体の上に置いたパーツを再び ドラッグした場合にも複製されてしまいますよね。 「元あった位置」からパーツmcがなくなったときにだけ複製させ たいのですが、どこにどのようなスクリプトを書けばよいのか。。。 ヒントだけでもいいので助けてください。 よろしくお願いします。
>>700 どういう設計してるのかわからないけど、
MovieClip._droptarget プロパティを見れば、
どこにドロップしたか分かるから、これ見て処理を分ける。
初期位置はonLoadで初期値覚えておいて比較するとか。
702 :
700 :2006/12/11(月) 07:17:33 ID:kQVt19fo
>701 レスありがとうございます。 MovieClip._droptargetを使っての判定だと、ドロップしたタイミング でパーツmcが複製される(orされない)ですよね。 できればパーツmcをpressしたとき(ドラッグ開始時)に、真下に パーツmcが複製されて欲しいのですが。。。 actionフレームに、パーツが元の位置にあるかないかを判定する 変数を入れておいて、 flg = ""; on (press) { if (flg == "") { パーツ_mc.duplicateMovieClip(); } else { flg = 1; } } ということも考えたのですが、なんだか書いていて自分でもよくわ からなくなってきました。。。 ちょっと寝て頭をリフレッシュします。
>>702 ん、ちがうちがうw 書き方が悪かったかな。
>パーツmcをpressしたとき、真下に複製を作りたい
>ただし、体以外でpressしたときだけ。体の上に置いたパーツmcを
>pressしても何も起こらない。--->これが上手くできません。
>「元あった位置」からパーツmcがなくなったときにだけ複製させたい
元の位置をonClipEvent(load)とかで保存しといて、
on(press)でこの値と現在位置を比較して同じだったら複製。
クリップイベントもコピーされるから複製されたMCもon(press)で
複製できちゃうからこれをどうするのかは仕様次第か。
>体以外でパーツmcがreleaseされたときには、そのパーツmcを削除する
この処理は_droptargetをみて処理を分岐
omPress時に複製つくる必要ってあるのかな?
最初に複製作っといて、オリジナルとコピーの2つを使いまわせば
いいんじゃないかな?ずっとシンプルになると思うけど。
_rootのフレームとかで、
パーツmc.duplicateMovieClip(パーツmc._name+"_copy",パーツmc.getDepth()-1);
パーツmc.initPoint ={x:パーツmc._x,y:パーツmc._y};
しといて、でonReleaseで
_droptargetみて体以外だったら、initPointに戻すとか。
まぁ、仕様がどうなってるのかわからないからあれだけど。
704 :
702 :2006/12/11(月) 14:08:49 ID:kQVt19fo
>703さん レスありがとうございました! 私の理解度が低いせいで、お手数おかけしています。 今、他のことで追われていてFlashを起動できませんが、今夜、必ず 試してみます。 (ちょっと読んだだけではわからなくて……) でも、「最初に複製を作る」というのは、こういう方法もあるのかと、 質問してよかったです。 onPress時に、ちょっとでもドラッグしたら複製を見せたいので、最初 から2枚重ねにしてみます。
705 :
704 :2006/12/11(月) 14:09:37 ID:kQVt19fo
連続すみません。 着せ替えの例えが悪かったので、別のも考えてみました。 コマmc ● ○○○○○……○(いっぱい) 配 置 先 ●をドラッグして○上に運びます。 ユーザーは好きな配置先(○)を選ぶことができますし、いったん、 ○まで運ばれた●も、再びドラッグして別の○上に移動することもでき ます。元の●の位置まで戻すこともできます。 また、●を運ぶのは一度ではなく、何度でも運べます(なので複製させ たい)。 実際には、コマmc●もいっぱいありますが、まずは1つで考えてみたい と思います。 前の説明よりわかりやすくなったでしょうか。。。
mc_aを追尾するように移動するmc_bを作りたいのですが、どう書けば良いでしょうか?
707 :
706 :2006/12/11(月) 16:37:44 ID:ho/6ZpsM
すいませんできてました
708 :
Now_loading...774KB :2006/12/11(月) 20:37:39 ID:t1rXdcUn
if文についての質問なのですが、 hensu1=ok; hensu2=ng; hensu3=ng; のように変数を3つ用意して、もしこの内のどれか一つでもokだったら〜する、という 条件式を作りたいのですが、どのようにすれば良いのでしょうか? イメージ的には if(hensu* ==ok){ trace("OKです"); } のような感じです。 どなたかお知恵を貸してください。
709 :
Now_loading...774KB :2006/12/11(月) 20:42:31 ID:t1rXdcUn
↑ 誤爆しました 無視してください
ネ申にちょっとお伺いしたいのだが、 例えば、09:00〜09:20までは「テキスト1」の表示、 09:21〜09:50までは「テキスト2」の表示・・・ のように、その時間毎で表示を変えるのは どういった方法をしたらいいんだ? とりあえず、newDate().getHours()の類を 使えばいいってことは分かったんだが・・・
711 :
Now_loading...774KB :2006/12/11(月) 22:38:29 ID:t1rXdcUn
onClipEvent (enterFrame){ hour=getHours(); min=getMinutes(); if(hour==9 && min>=0 && min<=20){ trace("テキスト1"); }else if(hour==0 && min>=21 && min<=50){ trace("テキスト2"); } }
712 :
Now_loading...774KB :2006/12/11(月) 23:22:54 ID:I8oAsFan
714 :
Now_loading...774KB :2006/12/11(月) 23:56:54 ID:t1rXdcUn
block22=1; cursor=22; baikai="block" add cursor; if(baikai eq 1){ trace("おめでとう"); } 以上のスクリプトがどうしても動きません。 どうすればよいでしょうか?addを用いているのはflash lite環境だからです。。
>>713 問題は解決しました。ありがとうございました。
>>714 変数が文字列であるのか数値であるのかを考えましょう
717 :
Now_loading...774KB :2006/12/12(火) 00:11:07 ID:L6FhC19E
>>716 それについてもう数時間以上悩んでいます。
たぶんif文の中のbaikaiは変数ではありませんよね。
でもそこから先どうやってよいのか分かりません。
718 :
Now_loading...774KB :2006/12/12(火) 01:57:03 ID:L6FhC19E
ぬぉーーー!4時間悩んだあげく、evalを使えばよい事が分かりました。 Flash liteでは配列をシュミレートしないといけないのを忘れていました。 716さんありがとうございました。
719 :
705 :2006/12/12(火) 12:08:48 ID:qPRbfmSl
>703さんにアドバイスいただいたにもかかわらず、私の頭では できませんでした……。 次の作業もあるので、ドラッグ&ドロップできるコマmc(●)を複 数のレイヤーに配置して対応することにしました。 (配置先の○は30コしかないので、とりあえず30レイヤー分作れ ば大丈夫だろうと。でも、こんなやりかたしかできないなんてダメ ダメですよね)
720 :
Now_loading...774KB :2006/12/12(火) 17:54:30 ID:oZr2V/iC
flash8 で作成しています。 特定の場所に来たら Mouse.hide(); を使って,マウスカーソルやハンドカーソルをかくし, 自分で用意したグラフィックのx.y座標をマウス位置にすることで オリジナルのマウスカーソルにしました。 しかしそうすると、ボタンがクリックできなくなってしまいました。 レイヤー順などを変えてみましたが ボタンオブジェクトを一番上にすると、ボタンに触れるときだけ いつものハンドカーソルになってしまいます。 オリジナルのマウスカーソルにまま、ボタンを機能させることは 可能なんでしょうか。 よろしくお願いします。
WinXP,FlashMX2004で作ってます。 外部テキストファイル"hoge.txt"の読み込みがどうもうまくいきません。 7行目のtraceでは値が確認できるのに一番下の行でのtraceでは確認できません。 traceの実行順も意図通りではなく、下のtraceが先に実行されます。 何とかなりませんかな…。 --------------------------------- var strTest = new String(); System.useCodepage = true; objLoader = new LoadVars(); objLoader.onData = function(src) { if (src != undefined) { strTest = src; trace(strTest);//←表示される } }; objLoader.load("hoge.txt"); trace(strTest);//←表示されない
>>721 まぁ、Flashは非同期処理だからねぇ...。
>>721 なんか上手く説明してるところないかなーと思って
検索してみたけど発見できず。
Loadvarsクラス :: onData メソッドの説明
> サーバーからのデータのダウンロードが完了したとき、またはサーバーからデータを
> ダウンロード中にエラーが発生したときに呼び出されます。
つまり、そのfunctionが実行されるタイミングは、hoge.txtのロードが完了した時。
objLoader.onDataの部分は、「もし俺のインスタンスに何かしらデータが来たら
これこれを実行してね」っていう登録にすぎないわけで。
要するに↓の順番で実行されるから、そりゃ一番したでtraceしてもまだ中身入ってないよね。
(1) var strTest = new String();
(2) System.useCodepage = true;
(3) objLoader = new LoadVars();
(6) objLoader.onData = function(src) {
if (src != undefined) {
strTest = src;
trace(strTest);
}
};
(4) objLoader.load("hoge.txt");
(5) trace(strTest);
初心者で恐縮なんですが on (press) { ID++; blocks = "waveblocks_" +ID; _root.attachMovie("waveblocks", block, ID); _root[block].x_ = 110; _root[block].y_ = 150; } これを押した後に一定時間ボタンを無効にしたいんですがなんかうまくできないのですが、 何かいい方法ありますか?
>>724 やったことないからわからんけど
ボタンを押した時間を取得しておいて、何秒以上経過してたら処理を行う。そうでないなら、行わない。
とか、どうだろか。
727 :
710 :2006/12/12(火) 22:48:53 ID:VCo8Lulp
神様、ありがとうございます!
728 :
726 :2006/12/12(火) 23:59:54 ID:PRhREt/H
time_B=0;//経過時間比較用。1フレーム目かどっかで初期化しとく。
---
on(press){
time_A = getTimer() ;//現在のFlash開始経過時間取得
if( time_B == 0 || ( 5000 < (time_A - time_B) ) ){//time_Bが0(初回実行時)か、5000ミリ秒経過したら、処理実行。
trace( (time_A - time_B)+"ミリ秒経過 : 処理しますお( ^ω^)");
time_B=getTimer();
}else{
trace( (time_A - time_B)+"ミリ秒経過 : 処理しませんお(ヽ´ω`)");
//time_B=getTimer(); //ボタンを押すたびに待ち時間をリセットするなら、これを有効にする。
}
}
>>724 俺も初心者だけど、俺なりに考えてみた結果こうなった。
一般的に、これがいい方法なのかどうかは分からないけど、参考になれば。
と、ここまで書いてやっと分かった。君はボタンそのものを消したかっただけなのか・・・。
>>724 //ボタンインスタンスメイをmy_btnとしてフレームに記述
var id; //clearInterval用
this.my_btn.onRelease = function() { //ボタンを押したとき
trace("release");
this.enabled = false; //ボタンを無効にする
id = setInterval(Kaijo, 5000); //5秒後にKaijo関数を呼ぶ
};
function Kaijo() {
my_btn.enabled = true; //ボタンを有効にする
clearInterval(id);
trace("操作できるよ");
}
730 :
721 :2006/12/13(水) 08:03:04 ID:ZTqQq8qg
>>723 数フレーム後で strTest を参照するようスクリプトを変更したら、値が取得できました。
非同期処理ということなので、毎回動作するかは不安が残るところです。
ホントは同じフレーム内で処理をしたかったのですが、問題は解決したので良しとします。
解説どうもありがとうございます。
>>728-729 亀レスになりすみません・・・。
イメージ的には消すというよりは一回押したら10秒間使えなくなる
みたいな感じにしたかったのです。
これからちょっと試してみます。
ありがとうございました。
732 :
Now_loading...774KB :2006/12/13(水) 17:59:08 ID:uRIGs/id
FlashMX2004で作っています。 新規でflaを開けた後に、UIコンポーネントのテキストフィールド、 コンボボックス、ボタンをおきました。 アクセシブルのところでタブインデックスをつけたのですが、タブ移動 していくと、コンボボックスにフォーカスがあたったまま止まって しまいます。 なにか特別な設定が必要でしょうか?
733 :
Now_loading...774KB :2006/12/13(水) 22:10:12 ID:s1tiCLxZ
for文を何度も使うとき、for文内の変数(普通は「i」かな?)の名前は、 それぞれ変更するべきですか?
>>733 for をネストしないなら別に平気。
個人的には、特に気にせず同じ名前。
ネストするときは、i2 とかやって、いつも変数名間違えてハマる。
var指定とスコープを理解してればおけ。 ASでは関数内でもvar無しで普通にi=0とするとタイムライン変数になるから注意。
for(i=0;i<8;i++){ for(j=0;j<8;j++){ for(k=0;k<8;k++){ for(l=0;l<8;l++){ } } } } こんな風に書いた覚えがあったが何だったか忘れた。
Flash MXです。 あるMC上にドラッグドロップされた、インスタンスの名前と 数を取得する方法ってありますか? あるMCはステージのフレーム1に座標0:0、サイズ500*500 に配置されています。 その上に、A.mc、B.mc、C.mcを複製しつつドラッグ&ドロップ。 (A_copy1、A_copy2、B_copy3、B_copy4、C_copy5など) 計算ボタンをクリックするとフレーム2に移動し、あるMC上 にあるA〜CのMCの個数を表示したいのです。 このとき、あるMCにドラッグしたA〜Cはフレーム2移動時 には削除したいので、ドラッグされたMCの名前も知りたいの ですが。。。 hitTest()を使って、1つずつ確かめていくしかないのでしょう か?
>>737 MovieClip._droptargetでドロップされたムービークリップインスタンスの
絶対パスを取得できるみたい。
A_copy1、A_copy2、B_copy3とかがあるMCにドロップされた時に
その名前を配列に入れていけばいいんじゃない?
739 :
Now_loading...774KB :2006/12/14(木) 00:07:56 ID:3tazjyhY
740 :
737 :2006/12/14(木) 00:13:14 ID:lDRduFrW
>738 レスありがとうございます。 やっぱりその方法ですよね。 手元にActionScript大辞典とActioScript逆引き大全がある ので調べていたのですが、他の方法は見つからなかったで す。 配列に入れていく方法でやってみます。
_root.NameFieldに名前を入れて、 EnterとSHIFTを押したら 2chトリップ付きで名前を返したいのですが、 saltの作成やcryptの代わりをヘルプを見ても分からないので訊きに来ました。 一応分かる部分は書いてみました。 環境は、Flash 8 proで対象はFLASH player8、OSはWinXPです。 //_root.NameFieldはテキストフィールド _root.onEnterFrame = function() { /* EnterとSHIFTが押されたとき */ if (Key.isDown(Key.ENTER) && Key.isDown(Key.SHIFT) && !bInit) { /* 名前が入っているか? */ if (_root.NameField.text != "" && _root.NameField.text != "ここに名前を入れてください") { /* 文字列取得 */ sNameBack = _root.NameField.text; i = sNameBack.indexOf("#"); // "#"の位置確認 if (i > 0) { // #があるなら... sTripData = sNameBack.substring(i+1,sNameBack.length); //この間が分からない... (salt作成/crypt()実行/後ろの文字を取る) sNameData = sNameBack.substr(0,i)+sTripData; }else { // #が無いなら... sNameData = sNameBack; // そのまま返す } trace(sNameData); // 結果を確認 bInit = true; // もう二度とやってやんねーよヽ(`Д´)ノウワァァーン } } }
743 :
741 :2006/12/14(木) 02:12:04 ID:Wj2UiaWy
>742 ありがとうございます。 やっぱりFLASHにはないですか... でも、Javascriptっていう手があるのを忘れていました。 すごく参考になりました。
「深度」に関する初歩的質問です ・0と100だとどちらが上に表示されますか? ・MCに深度を設定する方法はどうするのでしょうか? 初歩的過ぎて申し訳ないのですが、情報頂けると幸です
>>745 ありがとうございます
解説の順序見て、かなり初歩的だったのだと痛感しました
747 :
Now_loading...774KB :2006/12/14(木) 17:51:23 ID:bLva8J+B
初歩的な質問だと思いますがよろしくお願いします。 AというmcとBというmcがあります。 「Bにロールオーバーしたとき、Aが拡大。ロールアウトしたときに縮小。」 といった動きを作りたいのですが、どのようにスクリプトを書いたらいいでしょうか。 Aに変数を書き込んで、Bにif else文を使うやり方でいけるかなと思うのですが 書き方がわかりませんorz ネ申の方々助言よろしくお願いします!
748 :
Now_loading...774KB :2006/12/14(木) 18:27:54 ID:3tazjyhY
>>747 こんな感じで出来ると思うけど、
「誰でも分かるFlash」みたいなのを読んで、
もう少し概念を理解したほうがよさげ。
-----
B.onRollOver = function() {
trace("A拡大");
};
B.onRollOut = B.onDragOut=function () {
trace("A縮小");
};
750 :
Now_loading...774KB :2006/12/14(木) 20:25:12 ID:MMEBDRNx
質問します。 FLASH8でシーンをまたいで変数を持たせて 画面上のオブジェクトを非表示にさせようと思っているのです。 たとえばAのシーンで何かやった事によって該当するオブジェクトが Bのシーンでは非表示に最初からなっている。と言うもの。 if (_root.unko==1) { _root.pon.chin._visible=false; } とBの最初のフレームに書いて、Aのシーンのイベント終了後のフレームに _root.unko = 1; とやっただけでは駄目なのでしょうか? と言うかこれでいいんですよね?
751 :
750 :2006/12/14(木) 21:32:43 ID:ORy6GFMV
すみません、解決しました。 同一フレーム上に、そのif文で指定したオブジェクトが存在しないといけなかったんですね。 同一シーンのあとのフレームから出る物についてはいくら指定しても駄目だったのか。 実験では出来てただけにちょっと焦って分からなくなってしまってました。
752 :
Now_loading...774KB :2006/12/15(金) 17:07:07 ID:K1P+PHTL
Flash8で、スライドプレゼンテーションの形式で、プロジェクトを 作っており、 階層化にあるスクリーンのフレームを1フレームで、ストップさせておきたいのですが、 通常のstop();では、止まらないようです。そのまま、フレームが進んでしまいます。 なにか、別の記載方法があるのでしょうか? よろしくお願いいたします。
753 :
Now_loading...774KB :2006/12/15(金) 18:15:13 ID:LndMFZYj
>>752 ストップさせておきたいのはムービークリップ?
いまさらAS2.0の話なのですが、 リンケージプロパティから割り当てられたAS2.0クラスは、 そのクラスファイルがパッケージ内に存在するとロードできないですよね? これはそういう仕様 - つまりパッケージ内のクラスファイルを使用する場合は、スクリプトでインスタンスに割り当てなけらばならない - なのでしょうか?
AS2.0(笑)
>>754 言ってることがよくわからん。
具体的にどういう問題がでてるのでとかいわないと、何とも答えられんがな。
これこれこういうクラスを使いたいときに、どうやったらうまくいかなかったとか。
757 :
Now_loading...774KB :2006/12/15(金) 23:32:24 ID:qtZ+Pk4h
752です。 いえ、フレーム自体です。
758 :
754 :2006/12/16(土) 01:40:50 ID:4iDs+8mH
スマソ。これで分かるかな。 1. ライブラリにあるMCを右クリックし、AS 2.0クラスに自作クラスを割り当てる。このクラス定義ファイルは任意のパッケージに存在し、ルートの1フレーム目の最初に、 import somePackage.MyClass; のようにして使用できるようにしている(つもり)。 2. パブリッシュすると「MyClassクラスあるいはインターフェースをロードできませんでした」という旨のアラートが表示され、MyClassが使用できない。 3. 試しにこのクラス定義ファイルをパッケージの外に出し、flaファイルと同じディレクトリにおいてやると、問題なくパブリッシュされる。 どうして?
>>758 クラスのことは詳しくないが、
リンケージから割り当てるクラスはflaファイルと同じディレクトリにないとダメなんでないの?
もしくはパブリッシュ設定や環境設定でクラスパス指定してやればいいんでないの?
質問ですー。 8からcolorオブジェクトが非推奨になったので var trans = new flash.geom.Transform(obj); var color = new flash.geom.ColorTransform(1,1,1,1,100,100,100,100); trans.colorTransform = color; のようにカラー設定をしているのですが、以前にあった色情報を取得する getTransformに当たるものがないので var i = 0; for(var cl in trans.colorTransform){ iro[i] = trans.colorTransform[cl] i++; } みたいに地味に情報を取得しているのですが、もっとスマートに取得する方法はないでしょうか? 教えてください。
>>752 間違ってたらごめんね
多分"_root.stop();"を1フレーム目に置かれてる
インスタンスの何処かに記述すればいいんじゃないかな?
762 :
age :2006/12/16(土) 12:37:44 ID:vs3Zr00L
何かイベント(クリックならクリック)を起こした後に、 そのフラッシュだけをリロードするとかっていう、 アクションスクリプトはありますか?
>>762 読み込みなおしたいってことなら
_root.gotoAndPlay(1)
でいいんじゃない。
764 :
age :2006/12/16(土) 13:32:58 ID:vs3Zr00L
>>763 ありがとうございます。
全部のインスタンス等をフレーム1に書いてて、
動きは全部actionscriptで記述してるんですけど、
_root.gotoAndPlay(1)
でいけるんですかね?
ステージ上に100個近くのMCが置いてあります。 名前は、mc01, mc02, mc03, .... mc99です。 それぞれのMCに、on pressとon release時のスクリプト を書いているのですが、このスクリプトの内容がすべて 同じです。 スクリプトに修正があるたび、mc01のスクリプトを直して 他のMCにコピー&ペーストしているのですが……とても 手間です。 on (press) { function scriptA(); } みたいに記述して、修正がある場合には、直すのは1箇 所のコードだけのようなことはできないでしょうか? 自分で試していたのですが、上手く動きませんでした。 (上記のコードをMCに書いて、funtion scriptA ();をステー ジのactionレイヤーに書いてみた) 外部.asも考えましたが、納品物なのでそれは選択できま せんでした。 Flash MXです。 よろしくお願いします。
766 :
Now_loading...774KB :2006/12/16(土) 17:32:29 ID:+tePI6gy
WinXP, FLASH8 Proです。 2つのボタンが重なっていて、aボタンをクリックすると下からbボタンが 現れて、なおかつ2つのボタンは線でつながっているというのを作りたい のですが、線を描くスクリプトを書いても、つながってくれません。 bボタンの動きはタイムラインで動かしています。 メインのフレームアクションに、 flag=0; lineMC = this.createEmptyMovieClip("line", 1); this.onEnterFrame = function() { x0 = a_mc._x; y0 = a_mc._y; x1 = b_mc._x; y1 = b_mc._y; lineMC.clear(); lineMC.lineStyle(1, 0x006666, 100); lineMC.moveTo(x0, y0); lineMC.lineTo(x1, y1); } と書いて、aボタンのMCのボタンアクションに、 on(release){ if(_root.flag==0){ _root.b_mc.gotoAndPlay("as"); _root.flag=1; } } と書きましたがつながりません。bボタンが動くとそれに線が ついていきません。どなたかご指導よろしくお願いします。
>>765 できる。
> (上記のコードをMCに書いて、funtion scriptA ();をステー
> ジのactionレイヤーに書いてみた)
それ、パス違うだろ。MCからみたら_parentの階層に書いたんじゃねーの?
うまくいかないにしても、trace()で躓いてる部分を見つけて、何がどんなふうに
うまくいかないのか確認した方がいいぞ。
for()ループで、MCに定義するっちゅう方法もあるけど。
768 :
765 :2006/12/16(土) 17:49:16 ID:7Xc5p744
>767さん ありがとうございます。 MC自身に、 on (press) { function drag(); } MCが配置されているレイヤーに function drag () { this.startDrag(true); } と書いたのですが、 シーン = シーン 1, レイヤー = mc, フレーム = 4 : 行 2:'{' が必要です。 function drag(); というエラーが出ます(それ以降にもエラーが続いています)。
flvファイルを再生するときに拡大して表示するとピクセルごとに拡大されて汚くなってしまうんですが、 アンチエイリアスみたいなのをかけるにはどうしたらいいんでしょうか? できればyoutubeでフルスクリーン再生したときのような感じにしたいです。
>>766 b_mcが動いたように錯覚しているんじゃない?
動いているのはb_mcの中身。
中身がどんなに動こうとも_rootに配置してあるb_mcは1ピクセルも動いていない。
>>768 関数を
function drag(){}って定義したら呼ぶときはdrag()ね。
でもそれだと
>>767 の言うようにパスが違う。
forループで定義した方が簡単。( mc01って言う名前はmc1にしないとだめだけど)
for(var i=0;i<100;i++){
this["mc"+i].onPress = fStartDrag();
}
function fStartDrag(){
this.startDrag(true)
}
誰か
>>760 に答えてください・・・。
それともすごい変なことを聞いているのでしょうか・・・?
772 :
Now_loading...774KB :2006/12/16(土) 18:49:27 ID:+tePI6gy
>>770 さん、
ありがとうございます。
rootではMCを動かさない方がいいと聞いたのですが、この場合
どうすればいいのでしょうか?
もう一つMCをあいだに挟むということでしょうか。
773 :
768 :2006/12/16(土) 19:56:47 ID:7Xc5p744
>770さん レスありがとうございます。 試してみたのですが、ステージ全体がマウスにくっついて 動いてしまいます。 スクリプトを書く場所が違うのでしょうか。 i = "01"; _root["mc"+i].onPress = drag(); trace("onPress = drag();"); function drag(){ this.startDrag(true); trace("function();"); } をMCが配置されているレイヤーに記述しました。 実行すると、 function(); onPress = drag(); と出力されます。
774 :
Now_loading...774KB :2006/12/16(土) 21:56:40 ID:oUopIQBw
教えてください。 Flash上に「ここを押すと○○○の詳細を表示します」を表示して (○○○の部分は可変) その文字上をクリックすると次のページへ…とやりたいのですが、 TextFieldにその文字を設定するだけでは、幅が固定されているので 文字数が変わったときに幅があふれたり、文字数が少ないときに不要な部分までリンクになってしまいます。 任意のフォントで任意の文字列を表示するときに、 それがどの程度の幅・高さを必要とするか調べる方法はないでしょうか? iアプリなんかだとfontクラスというのがあるのですが。
>>772 a_mcとb_mcを線でつなぐんじゃなくて
a_mcと[b_mcの中身の動いているmc]を線でつなげばいいんじゃない?
>>773 書き間違えでした。
× _root["mc"+i].onPress = drag();
○ _root["mc"+i].onPress = drag;
dragの後ろの()は必要なかったわ。
>>774 文章の長さにあわせてテキストの長さを変えてあげるか、
「ココを押すと」の部分をmcにしてattachMovieするとか。
777 :
773 :2006/12/16(土) 23:58:17 ID:7Xc5p744
>775さん できました!!! 嬉しいです。 これでコードに修正があっても楽勝になりました。 多謝です。
779 :
758 :2006/12/17(日) 00:41:56 ID:4YwAV0om
>>759 クラスを保存してあるディレクトリへのクラスパスは環境設定で指定してあるんだよね。やっぱり仕様なのかもね。
780 :
Now_loading...774KB :2006/12/17(日) 01:42:51 ID:BnzHcD4x
詳しい方ご教授ください。。 getURLでcgiファイルに2つの変数を渡したいのです。 on(release){ getURL("test.cgi","","GET"); } と書くと、2つとも変数を渡せたのですが、GETをPOSTにすると、 どうやら片方しか渡してないみたいです。 原因は何なのでしょうか?
781 :
759 :2006/12/17(日) 03:14:34 ID:Iln48Bnw
>>779 >>759 で出来たけど。こういうことじゃないの?
適当なフォルダ
├ flaファイル
├ somePackage (フォルダ)
├ クラスファイル MyClass
リンケージ設定でMyClassを割り当てる。これでパブリッシュすると
「クラス 'MyClass' がロードされませんでした。」
とエラーメッセージ。
(↑これをなんとかしたいって質問だと思ったんだけど違ったらごめんよ。)
[パブリッシュ設定]-[Flash]タブ-[設定]ボタンから絶対パスでクラスパスを指定。
D:\適当なフォルダ\somePackage コンナ感じ。
パブリッシュで(゚д゚)ウマー だったよ。
環境はFlashMX2004pro
>>780 cgiとやりとりするならLoadVarsクラスを使ったほうがいい。
783 :
Now_loading...774KB :2006/12/17(日) 05:43:55 ID:BnzHcD4x
>>782 夜分遅く回答ありがとうございます。
製作環境を明示していませんでした。。申し訳ありません。
Flash Liteで書き出し、携帯端末のデータフォルダ内で実行しているため、
LoadVarsが使えないのです。そこでgetURLでcgiに変数を渡すのですが、
POSTだと何故か
>>780 のような現象が起こるのです…。
784 :
777 :2006/12/17(日) 07:08:00 ID:NZ4NkhrB
>777で、できたと書いたのですが……問題が発生しました。 for ( i=1; i < 100; i++ ) { if ( i < 10 ) { t = "0" + i; } else { t = i; } _root["m"+t].onPress = drag; _root["m"+t].onRelease = drop; } function drag(){ this.startDrag(true); } function drop(){ this.stopDrag(); _global.num++; newName = this._name+"_"+_global.num; this.duplicateMovieClip(newName, _global.num); } 上記のASをステージのactionレイヤーに書きました。 m01〜m99のMCには何も書いていません。 ↑にあるように、ドラッグ時にMCを複製する仕様なので、現在のAS のままだと複製されたMCが動きません。。。 m01〜m99のMCにfunctionを動かす記述をしてみたのですが、 on (press) { drag(); } or on (press) { drag; } on (release) { drop(); } or on (release) { drop() } だと動きませんでした。 複製されたMCも同じように動かすには、どのように書けばよいので しょうか?
785 :
Now_loading...774KB :2006/12/17(日) 07:50:05 ID:iRQFX4DK
>>775 さん
ありがとうございました!
ようやくつながりました〜。
感謝します!
>>784 ボタン自身を複製することはできないので、
MovieClipの中にボタンを作って引数でメソッドに受け渡して。
変数定義も忘れずに。
_global.num = 0;
function drag(mc:MovieClip) :Void { mc.startDrag(true); }
function drop(mc:MovieClip) :Void {
mc.stopDrag();
_global.num++;
newName = mc._name+"_"+_global.num;
mc.duplicateMovieClip(newName, _global.num);
}
on (press) { _root.drag(this); }
on (release) { _root.drop(this); }
787 :
784 :2006/12/17(日) 10:06:20 ID:NZ4NkhrB
>786 回答ありがとうございます! これから試してみたいと思います。 (理解するのに時間がかかりそうなので。。。)
788 :
Now_loading...774KB :2006/12/17(日) 13:30:12 ID:24mLtf9h
線をサウンドのエフェクトの様にランダムに波打たせるにはこれから何を使えばいいのでしょうか? どなたかアドバイスだけでもお願いします。 onClipEvent (load) { this.lineStyle(1, 0x666666) this.moveTo(10,10); this.lineTo(400,10); }
質問ですー。 8からcolorオブジェクトが非推奨になったので var trans = new flash.geom.Transform(obj); var color = new flash.geom.ColorTransform(1,1,1,1,100,100,100,100); trans.colorTransform = color; のようにカラー設定をしているのですが、以前にあった色情報を取得する getTransformに当たるものがないので var i = 0; for(var cl in trans.colorTransform){ iro[i] = trans.colorTransform[cl] i++; } みたいに地味に情報を取得しているのですが、もっとスマートに取得する方法はないでしょうか? 教えてください。
790 :
Now_loading...774KB :2006/12/17(日) 19:58:26 ID:MBu7kFmc
名前: E-mail: 内容: 質問です onClipEvent (load) { _x = 0; _y = 0; ido =3; } - onClipEvent (enterFrame) { if(_x==60){counter++; instance_name = "gazo" + counter; //インスタンス名 sindo = 1000 + counter; //深度はカウンターの数字を利用 _root.gazo.duplicateMovieClip(instance_name,sindo);} _x += ido; } @○→ _x=60 A○ → ○ → _x=60 B○ → ○ → ○→ このようにスプライトを複製して上の図のような動きを作りたいのですがうまくいきません。 教えてください。
791 :
Now_loading...774KB :2006/12/17(日) 20:00:06 ID:MBu7kFmc
↑上のは間違いです、すみません onClipEvent (load) { _x = 0; _y = 0; ido =3; } - onClipEvent (enterFrame) { if(_x==60){counter++; instance_name = "gazo" + counter; //インスタンス名 sindo = 1000 + counter; //深度はカウンターの数字を利用 _root.gazo.duplicateMovieClip(instance_name,sindo);} _x += ido; } @○→ 進行方向 _x=60 A○ → ○ → 進行方向 B○ → ○ → ○→ 進行方向 このようにスプライトを複製して上の図のような動きを作りたいのですがうまくいきません。 教えてください。
とりあえず、新しくduplicateしたMCの挙動もつくってあげないといけないよ。 自分をコピーしたからって、onClipEvent (load)とかまでコピーしてくれないのさ。
>>791 if ( _x==60){}
ってのはx座標がジャスト60のときって意味で
61でも60.1でもダメ。そこらへんも大丈夫?
794 :
Now_loading...774KB :2006/12/17(日) 23:53:28 ID:0yZ7zo8F
gotoAndPlayについて、教えてください。 飛び先にラベルを指定しているのですが、ラベル名のついたフレームで静止してしまい、後のムービーにつながってくれません。 なにか特殊な設定をする必要があるのでしょうか? ローディング画面から、本編のムービーに飛ばしたいです。 _root.onEnterFrame = function() { if (_framesloaded>=_totalframes) { gotoAndPlay("done"); } total = _root.getBytesTotal(); loaded = _root.getBytesLoaded(); percent = Math.floor(loaded/total*100); _root.bar_mc._xscale = percent; updateAfterEvent(); }; stop();
795 :
794 :2006/12/18(月) 00:18:46 ID:yfAM5IbI
自己解決しました。。
おはようございます 基本的な質問スレかこちらに描くべきか迷いましたが、一応アクションスクリプトのことなのでこちらにかかせてもらいました ステージ上にmc_Aがあります。こいつは on (press) { this.startDrag(); } on (release, releaseOutside) { this.stopDrag(); } とドラッグで自由に動かせるようにしています。 他にステージ上にはmc_Bがあり、Bのほうは最初は見えなくて ボタンを押すと浮き出てくるようにしています。 ボタン押してmc_Bが浮き出てきた後 Aのほうをドラッグして移動させると Bも浮き出てきた場所から一緒にAと連動させれることって可能ですか? 可能でしたらご教授のほうお願いいたします。 日本語が下手で申し訳ないです。 つまりはmc_Bがmc_Aと連動していて、mc_Aを動かしたらmc_Bも動いてほしいのです。(うまく説明ができない・・・
>>796 //mc_a と mc_b を配置したタイムラインに書く
function moveTogether(a:MovieClip, b:MovieClip) {
oldX = nowX;
oldY = nowY;
nowX = a._x;
nowY = a._y;
diffX = nowX-oldX;
diffY = nowY-oldY;
b._x += diffX;
b._y += diffY;
}
mc_a.onPress = function() {
this.onMouseMove = function() {
moveTogether(this, mc_b);
};
this.startDrag();
};
mc_a.onRelease = mc_a.onReleaseOutside=function () {
delete this.onMouseMove;
this.stopDrag();
};
教えて下さい m(__)m 。 Flash8使用です。xmlデータで画像スライドを製作中です。
blog_XML = new XML();
blog_XML.ignoreWhite = true;
blog_XML.onLoad = function(success) {
if (success) { // xml読み込み成功なら...
var err = this.status;
if (err == 0) { // 読み込みエラーがなければ...
・・・・・・・・ // 読み込んだxmlのデータを処理
} else { // 読み込みエラーがあれば...
_root.message.text = "analysis:err"+err;
stop();
}
} else { // xml読み込み失敗なら...
_root.message.text = "load:err"+err; ←☆☆☆
stop();
}
};
blog_XML.load("
http://blog.xxx.ne.jp/xxx/index.xml ");
Flash8上でのムービープレビューやパブリッシュプレビューではxmlを読み込むのですが、
Flash Player上やsite上では読み込まず、Flash Playerでは接続の安全上の理由で停止と表示され、
☆☆☆のところでerr==undefinedが出ます。site上でスーパードメインは一致していて、
また自分がblogに上げた画像を読み込むだけなので、著作権等の問題はないと思うのですけど...
何かスクリプトを追加した方がいいのでしょうか、ご教授お願いします。
799 :
Now_loading...774KB :2006/12/18(月) 16:29:59 ID:Dh2hnMC3
質問させてください。 ある変数を消去するにはどうすれば良いのでしょうか。 環境はFlash lite 1.1です。(Flash 4相当)
>>798 読み込み失敗の時にerr変数が定義されていない。
>>799 消去というか、もう少し具体的に言ってくれないとわからん。
つか、消去する必要性ってあるの?
801 :
799 :2006/12/18(月) 19:21:20 ID:Dh2hnMC3
>>800 回答ありがとうございます。質問を言い換えると、
たとえば、
name=太郎;
score=1000;
time=0;
coin=100;
などの変数が存在したときに、getURLで、cgiへ変数を送信したいのです。
このとき、nameとscoreのみを送信したのですが、どうすればよいのでしょうか?
以下ボタンアクション
on (release, keyPress "#") {
getURL("
http://www.hoge.com/hoge.cgi ", "", "POST");
}
ボタンreleaseで、読み込んだ直後の初期状態に戻すという動作をさせたいのですが、 フレームはstopさせているのでgotoandstop(1)は使えません。 座標を変えたシンボルや読み込んだ画像など、とにかく最初の状態に戻すという命令はありますか?
>>802 getURL("javascritp:location.reload();");
>>802 フレームを一つ増やしてそこでthis.stop()させとけば、gotoAndPlay(this._currentframe-1)は使えるでしょ。
それだけじゃ不十分かもしれんが、状態を初期化したいならそれを前提に設計するしかない。
ASですべてをもとの位置に戻していらない画像は非表示にしたりunloadするとかの仕組みを自分で作る。
805 :
Now_loading...774KB :2006/12/19(火) 00:18:37 ID:yUJhFPxx
スイマセン、すげえ初歩的なんですが、今までやってて自分の知ってる挙動で 動かなくて困ってます。 こんなことなかった気がするので質問させていただきます。 onEnterFrame = function(){ now = new Date(); hoge = now.getSeconds(); _root.mes.text = hoge; trace(hoge); } this.stop(); とだけ書いたflashを作って ダイナミックテキストのmesというものにhoge秒を入れようとしているの ですが、traceでは秒数が更新されているのに、textでは最初の一回を表示 しただけで止まってしまいます。 script部分のenterFrameではtextって更新されないのでしたっけ? 今までloadingbar等作っていた時、ちゃんと動いていた気がするのです。 Flashの設定等でおかしいところがあるのでしょうか。 アドバイスいただければ幸いです。
↑Flash8です
807 :
Now_loading...774KB :2006/12/19(火) 00:24:18 ID:jWPCEMsY
FlashからASPに変数の値を渡す方法を教えてください。 ASPのプログラムはVB.NET言語で記述してあり、単体では動作している状態です。 その入力画面をFlash化したいと思い、そのためにFlashからASPへ値を渡す必要があります。 値を渡して表示するだけではなく、その値を元に計算をしたいので、 板違いかもしれませんが、できればVBの変数に代入するところまで教えていただきたいです。 環境はFlashMXでOSはWindowsXPです。ASP2.0のWebDeveloperを使っています。 使用言語はVisualBasic.NET言語です。 回答よろしくお願いします。
808 :
Now_loading...774KB :2006/12/19(火) 01:21:19 ID:xt463zRC
質問です。 ASを書くとこにHTMLの<!-- -->みたいに 注意書きとか書いておきたいんですけど、 どうすれば??教えてください。
>>801 別のスコープでgetURLをすればよいと思うよ。
obj = new Object();
obj.name=name;
obj.score=score; で
obj.getURL(〜)とかなんとか
でもgetURLに引数としてobjをいれるんだったかもしれない。
>>805 動き始めからフレームを移動したせいで
テキストフィールドの名前が変わってたり消えたりしてない?
trace(root.mes)やtrace(root.mes.text)もしてみるといいよ。
811 :
808 :2006/12/19(火) 03:09:21 ID:xt463zRC
ボタンのことで質問です。Flash8PRO使ってます。 1回目のクリック→ムービークリップのmc1をattachまではできるんですが 2回目はmc2をattach 3回目はmc3を・・・、という風にやりたいんですが変数を使ってみてもいまいち 使いこなせなくて・・・、どうすればいいんでしょうか。お願いします
i = 回数 attachMovieClip("mc?の元","mc"+i,適当な深度数値+i); みたいに、名前と深度に通し番号つけないといけないよ。
814 :
812 :2006/12/19(火) 06:53:02 ID:C3JtUcqJ
>>813 //mc_Aは仮です
on (press) {
this.mc_A._alpha = 100; //attachは使わず、アルファの調整で出現させるようにしました
}
リスナー使ってみましたが、ボタンではなく画面ぜんたいのクリックを反応してしまってうまくいかず・・・
if文でも無理でした。どうしたらよろしいですか?
>>814 の補足です。
on (press) {
this.mc_A._alpha = 100; //attachは使わず、アルファの調整で出現させるようにしました
}
クリック1回目だと上の工程でmc_Aが出てきます。
そしてもう1回同じボタンを押したら
mc_Bのアルファ値を変更させれないですか?という質問です。
>>814 それはどこに書き込んでるの?
on(〜)のスクリプトはフレームとかじゃなくてボタンに書き込まないといけないよ。
pressした回数(=i)を保持しておいてon(press){〜}の中に
i++;
// 1回目
if(i==1){
this.mc_A._alpha = 100;
}
// 2回目
if(i==2){
this.mc_B._alpha = 100;
}
・・・
みたいにすればどうかな。
>815 _root.btnAを押して_root.mc_A._alphaを変化させる _rootの1フレーム目に書く i = 0; mcList = ["mc_A", "mc_B"]; btnA.onPress = function() { this._parent[mcList[i]]._alpha = 100; i++; }; 813の言ってること調べれば応用でいろいろ出来る それと、アドバイスには返事した方が近道だよ
>>816 あ、ボタンのところに書いてます。
試して見ます!
1回目のアドバイスが無駄になってしまい、申し訳無いです・・・。
>>817 早朝からレスありがとうございます。
こちらも試してみようと思います!
819 :
812 :2006/12/19(火) 07:59:52 ID:C3JtUcqJ
>>ID:kDNgG/MZ できました! >>ID:PCn4U/QC メモっておきます! 早朝からご迷惑かけました。 本当にありがとうございます。 以下名無しに戻ります
>>805 そのコードをコピペしたらちゃんと動いているよ
やりたいことは、trace結果と同じように
処理の履歴をmesに表示したいのかな?
だとしたら
_root.mes.text = hoge;
を
_root.mes.text += hoge+newline;
とかに変更してみたらどーでしょう
こんにちは。 Flashにて動的なフォトギャラリーを作りたいのですが、 参考になる書籍や、ウェブサイトなどはありますか? 無精なんで更新が楽な方が良いのですが・・・。 MacOSX 10.4.6 FlashMX です。 理想としては、外部の寒ネール読み込み→サムネールクリック→本画像読み込み のような感じで、箇所箇所でアニメーションさせたいです。 宜しくおねがいします!
822 :
798 :2006/12/19(火) 11:04:44 ID:bER1YbNm
自己解決しました。ドメインが完全一致していない場合、 ポリシーファイルなどで許可されていないと、 flash playerがxmlを読み込もうとしないようです。 で、phpなどを間に挟めば回避出来るようです。
824 :
Now_loading...774KB :2006/12/19(火) 18:45:28 ID:D0MUTQ6o
ver9のswfにver5のswfを読み込んだ際に ver5のswfから_root.関数名という感じで関数が呼び出されるのを ver9のswfにて認識することができません。 何か方法があるのでしょうか。 「警告 : onSetFocus は関数ではありません」 こんな感じでエラーが出ています。 ver6とかでしたらその関数を_rootに相当するところに用意したら 認識できていたのですが。 一応環境はeclipseのantでflex2ビルドをかけているという状態です。 うまく説明できなくてすみません。
FLASH MX(version 6.0) です。 PC のシステム時刻が、ある時刻になったら、何か処理するような 事をやりたいのですが、方法があれば教えてください。 例えば 10:00、 12:30、15:00 になったら、関数が呼ばれるように 時間をトリガにイベントを発生させたいのですが、方法があれば アドバイスをお願いします。 もし、そのものずばり、がなくても、1日24時間動き続ける FLASH となりますので、 ある時間間隔(5分間隔など)で関数を呼び出すような方法でもなんとかなると 思います。 アドバイスのほどよろしくおねがいします。
>>825 以前に同様な質問にsetIntervalを使って、毎分とか毎時間ごとに時刻チェックをすれば
良いってレスしたけど、違う人なのかな。やり方解らないとかだったらそう言っておくれ。
FLASH 8使ってます。質問なのですが、
オールFLASHで制作されたWEBサイトってスクロールができないですよね・・・?
コンポーネントをひとつも使わず自作ムービークリップのみで製作したり、
パブリッシュする時に背景を透過するとスクロールは出来ますが・・
前者ではシステム的なFLASHを制作できないし、
後者ではSWFが、既知の変な挙動を起こします。(IMEが効かなかったり異常な重さになる)
でもWEB制作会社が作ったフルFLASHのサイトを見ると、
思いっきりテキストエリアのコンポーネントを使っているのに
縦スクロールが出来ていて、挙動もおかしくないです。これはどのようにしているんでしょうか?
参考[MoneyKit]
ttp://moneykit.net/visitor/demo/PTOP0000.html テーブルで囲ってみたり、ポジションで透明の画像をSWFの前に貼ってみたりと
色々してみたのですが、どうしてもスクロールが出来ません。
スクロールを有効にする方法をご存じの方がいれば、ご教授お願いします。
>>827 どこのどういうスクロールだよ
オレ用語で勝手に話を進めるな
ブラウザのスクロールバーのことか?それともScrollPaneの挙動のことか?
どっちにしてもそんな変な挙動に悩まされたことはないけどな
>>828 macromedia謹製コンポーネントを使うと、
スクロールがそっちに取られちゃって、ブラウザ(HTML)のスクロールが出来ない件でしょ。
ぼちぼち有名。
>>829 それって古いIntelliPointで起きるやつ?もう改善されてるんじゃないの?
違うとしたら解決方法は?有名かどうかより解決方法が重要だろ。
っていうか
>>827 の参考サイトはどこもスクロールしてないけど・・・?
作りかけなのかボタン押しても反応少ないけど。
>>831 マウスのグリグリでスクロールってことでしょ?
Flash操作中でもスクロールできる。
>>827 が言っているサイトはコンポーネントっぽいけど
自作したもの使ってるんじゃない?
っていうかコンポーネント使わないとシステム的ナFlashを制作できないって何故?
デザインが・・・って話ならコンポーネント置いて拡大表示して真似て作ればそれっぽくなるし。
動作のことならAS使えば出来る。
>>827 おれがいた
おれもそのサイトしってておかしいと思ってたんだが
やっぱりJavascriptか自作コントロールなのかね〜
>>832 おれの作り方が悪いのかもしれんが
コンポーネント自作って大変じゃない?
あのプロパティをちまちま作る作業がもう・・・
二度としたくないんだが('A`)
FLASH MXですがswfと同じフォルダにある、wmvをswfの中で再生したいのですが 方法を御存知の方がいらっしゃれば御教示ください。 (swf の中に wmv を取り込むのではなくて、外部ファイルを読み込んで再生したい)
>>836 無理。
「外部の動画ファイル」っつー意味合いで言うと、FLVしか対応してません。
838 :
836 :2006/12/21(木) 16:07:24 ID:aNcLcwGw
>>837 情報ありがとうございます。できないのですね。
ちなみに、最新版ではできるか調べてみましたが、
これもよくわかりませんでした。大変すみませんが、
これは、最新版のFLASHでも同様に、外部の動画ファイルを扱うには、
FLV しか対応していないでしょうか?
うん
こ
>>835 普通はコンポーネント使うと
マウスホイールか矢印キーを使ったブラウザのスクロールが出来ない
ANAのサイトにあるフルフラッシュの席予約システムとかと見比べると分かる
まぁWEB制作会社がフルフラッシュのサイトを作るとき
よくブラウザのスクロールバーをCSSで消すが、これが原因のひとつにもなってる。
まぁ縦に長いFlashなんて気持ち悪いし、ステージ伸ばせないしとか、他にも色々理由はあるが
ちなみに俺は対処法はJavascriptと、面倒だが自作コントールの2つしか知らん。
他に何かあるなら教えてくれ
842 :
Now_loading...774KB :2006/12/22(金) 19:42:53 ID:5eE+azx6
初歩的な質問かもしれませんが よろしくお願いいたします。 コンポーネントのmediaDisplayを使い、ムービー制御をしているのですが、 ここに配置したムービをスクリプト上で、止めたい(ストップ)のですが どう記述するか、お教えください。 また、止めた後に再び再生したいのですが、 合わせてお願いいたします。 flash2004MXです
質問です 文字列のn番目の文字を別の文字に変更したいのですが どのようなスクリプトにしたらよいでしょうか? var bun=゙あさうえお゙; var moji=゙い゙ (bunの2番目の文字をmojiに変更して以下のような内容にしたい) moji=゙あいうえお゙;
>>843 var bun="あさうえお", moji="い";
moji = bun.substr(0, 1)+moji+bun.substr(2);
フラッシュのタイムラインでバナーを作成しました。 これに、 偶数秒にアクセスしてきた人をindex.html 奇数秒にアクセスしてきた人をindex2.html にとばすことはできますか。
>>842 playとpause
そういう基本的なことはヘルプ見たほうが早い。
ヘルプの[Flashコンポーネントガイド]-[コンポーネント辞書]-[メディアコンポーネント]
>>845 ローカル時間でいいなら、Date.getSeconds()
EXE形式に publish した場合、外部テキストファイルの読み込みや、 外部のムービー(FLV)の読み込みができないのですが、 EXE形式の場合は、このあたり何らかの制限があるのでしょうか?
exeの場合、読み込み先のパスに2バイトが含まれると問題が起きたはず パスは1バイトのみになってる?
>>848 ビンゴでした。パスに2バイト文字列が含まれていない環境で動かしたら
正常に動作しました。ありがとうございました。
FLASH8 です。 ダイナミックテキストに表示する文字のフォントについて質問です。 ダイナミックテキストのフォントサイズを表示する文字列に最適になるように 自動で処理(設定)する事はできますか? 例えば、ダイナミックテキストに表示する文字列が「あいうえおかきくけこ」 の場合は、「あいうえお」を表示する時より自動的にフォントサイズを 小さくする。 たくさん表示したい時は、たくさん表示できるようにフォントサイズを小さくし、 少しだけ表示したい時は、大きなフォントで表示する。 説明が下手糞ですみませんが、上記行なう方法があれば教えてください。
ライブチャットのようなチャットシステムを作りたいのですが、 まず何から始めればよいのでしょうか 適当に使いそうな関数を教えてください。 適当すぎたらこまります。
>>851 Flash Communication Serverを買う。
ライブチャットって良くわからないけどCGIとかでもできるのかな?
できるならそっちの勉強した方いい。
外部から読み込んだテキストを縁取り表示したいのですがどうすればできますか?
特定の方向にドラッグを一定距離する度に、MCを次のフレームに進め、 また、元の方向にドラッグしたらとフレームが戻っていく、という仕掛けを作りたいんですが、 ドラッグの部分の処理をどうすればいいのかわかりません。よければ教えてください
>>853 うーん、フォント埋め込んで、、、やっぱむりっぽい。普通に静止テキストでやる。
>>854 ドラッグ開始時のxy座標を記憶してとかになるとおもうけど、普通に
MC内のある領域にマウスが移動したら、フレーム移動でいんじゃないかな。
きちんと止まる様に作るのもたいへんそう。
>>853 取り込んだフォントをビットマップ化してから加工とかできないかな?
857 :
854 :2006/12/27(水) 10:54:05 ID:H9g4VTsw
>>855 ありがとうございます。参考にさせてもらいます。
858 :
Now_loading...774KB :2006/12/27(水) 16:37:21 ID:WGpiKB8q
基本的な質問スレで一回質問したのですが 基本的でもないし、どちらかといえばASの質問なのでこちらで質問させてください getURLからjavascriptでwindow.open()をしようしたいのですが、プレイヤーとバージョンは どこまで可能なのでしょうか?flash player ver.5では動作確認できました よろしくお願いします
859 :
Now_loading...774KB :2006/12/27(水) 18:17:15 ID:WGpiKB8q
追記します。 フラッシュ作ったページにはflash player8 AS2.0で開くことができましたが フラッシュを載せてないページが開いてくれません XP2ではちゃんと動作しないことがあるみたいなことも目にしましたがどうなんでしょう?
860 :
Now_loading...774KB :2006/12/27(水) 18:50:24 ID:TGAUI5Zt
カウントダウンを作っているのですが、期日まで数字が無くなったら 指定のフレームに移動するよう if( ( eventUTC - todayUTC ) <= 0 ) { _root.count_end.gotoAndStop( 2 ); removeMovieClip( _root.count_down ); } と作ったのですが、期日の10秒前にフレーム移動をする場合 if( ( eventUTC - todayUTC ) <= 0 ) の部分をどのようにしたらいいでしょうか?
861 :
Now_loading...774KB :2006/12/27(水) 19:03:57 ID:WGpiKB8q
自己解決したっぽいです ローカルでの動作とサーバーにアップしたときで違っただけみたいです
862 :
Now_loading...774KB :2006/12/28(木) 14:28:29 ID:j0D+D78W
よろしくお願いします。 function abc(hoge){ trace(hoge) …@ if(hoge){ …A _root.num++ trace(_root.num) } } としたときに、 abc(_root.num==1); と、いう具合に判定しようとしても、先に@のところでfalesに変換されてしまい、 Aのifの部分では、うまく判定してくれません。 変数で命令内容を代入して書くことは不可能なんでしょうか…?
863 :
Now_loading...774KB :2006/12/28(木) 14:34:17 ID:0zO0UVpx
>>862 まず、コーディングの基礎からやり直すことをお奨めする
「_root.num == 1」は、「「_root.num」が「1」かどうかを判断する式
その結果が関数の引数として渡されるから、「_root.num」が「1」でなければ「false」が返って当然
文字列としての「"_root.num == 1"」をevalに渡すことで対応はできるが、そういう構造にならないように仕様を再検討することをお奨めする
864 :
862 :2006/12/28(木) 14:37:41 ID:j0D+D78W
ありがとうございます。 文字列として代入して実験してみたりもしたのですが、 文字列として代入したら、最後まで文字列扱いになってしまうので、 どうにもなりませんでした。 文字列として代入したものを、後で式として読み取ったりすることは 不可能なのでしょうか? それが無理でしたら、再検討することに致します。
ごめんうそついた ActionScriptのevalはオブジェクト名しか解決できないのか 文字列を式として展開するアルゴリズムは色々あるけど、汎用的なのは知らないなー 一発で実行できるのは、オレが知らないだけであるのかもしれない 他の知ってる方、フォローお願いします
866 :
862 :2006/12/28(木) 14:57:52 ID:j0D+D78W
一応、再検討案として考えたのは… function abc(hoge){ if(hoge==1) if(_root.num==hoge){ trace(_root.num) } }else if(hoge==5){ if(_root.num==hoge){ trace(_root.num) } }else if(hoge==10){ if(_root.num==hoge){ trace(_root.num) } }else if(hoge==15){ if(_root.num==hoge){ trace(_root.num) } } } abc(1); みたいな感じなんですけど…。一応、これで綺麗に書けてるんでしょうか…。
>>862 関数
function abc(hoge){
trace(hoge())
if(hoge()){
_root.num++
trace(_root.num)
}
}
abc(function(){return _root.num==1});
MacIEのバカッ!
869 :
862 :2006/12/28(木) 15:14:25 ID:j0D+D78W
>>867 どうしてこれで動くのか、まだよく分かっていませんが、成功しました!
ありがとうございます。勉強して出直してきます。
870 :
Now_loading...774KB :2006/12/28(木) 23:27:30 ID:Ty64kRki
すいませんくだらない質問です。 loadMovie ("aaa.swf", 1); これを利用してFLASHを埋め込んで再生しているのですが・・・ テキストをダイナミックに見せるために画面外までに大きくひっぱってトゥイーンしてるんですが。 埋め込んだらそのはみ出ている部分も見えてしまうんです; なんとかいい解決方法があったら教えてください;
画面外ってどこですか?もしかしてモニタの外に表示されるってことですか? マジレスするとマスクかな
872 :
Now_loading...774KB :2006/12/29(金) 11:17:35 ID:FB5iBDCP
かいてください
874 :
Now_loading...774KB :2006/12/29(金) 22:15:33 ID:FB5iBDCP
872ですが 嫁が今日ママさんバレーの忘年会だった! それなら言ってから出かけろよ!ばーかばーか俺の財布の中154円しかないよ おなかすいたけど、晩飯がない、あーあ昨日パチスロ行くんじゃなかった。 キムチが冷蔵庫にある、お茶漬けもある、豆腐ある、野菜少々、お米はない 何も作れない俺、やばい泣きそう、嫁は酔っぱらって帰って来るんだろーなー おしえれ
そんな家庭の事情など知らん。 ちなみにオレは拠り所がなにもないので一人で夕飯作ってる。 家に帰っても誰もいないし部屋は常に真っ暗。仕事以外に生きがいがない。 そんなオレからのアドバイス。 ある程度スクリプトの勉強をして、 何を教えて欲しいのか、といった質問ができるようにしてください。
ダイナミックテキストの上でクリックしても、 テキストが反転しないようにするにはどうすればよいでしょうか
>>876 プロパティパネル内に選択させるかどうかの設定がある。
879 :
Now_loading...774KB :2006/12/31(日) 17:36:35 ID:/UEb3M1U
環境:Flex SDK(asファイルのみのコンパイル) やりたいこと:swfへのflv埋め込み&再生 おねがいします
880 :
Now_loading...774KB :2007/01/01(月) 22:39:41 ID:Q/MUuwQ1
>880 すまんあんて微塵も思ってないだろw スレ違いだ他あたってくんねぇ
882 :
Now_loading...774KB :2007/01/02(火) 02:15:23 ID:Fu/XFUic
すみません。質問です。 URLエンコードしてものをテキストファイルに出力する ⇒テキストファイルを開く そうすると、 テキストファイルにはいってるのは、 エンコードされる前の文字列になるんですか?
883 :
Now_loading...774KB :2007/01/02(火) 10:38:26 ID:8AJKuHeq
WinXP、Flash Professional8で制作しているのですが、hitTestが思うように機能してくれず困っています
ttp://kossie.run.buttobi.net/cgi-bin/up/src/kos0479.zip.html (DLP:as)
スクリプトの記述状況は上のflaファイルの通りです
「block1(インスタンス名)がplayer(インスタンス名)に当たったら次のフレーム(miss)に飛ぶ」
という流れを想定しているのですが、block1にplayerが当たっても何も起こらないといった状態です
hitTest関係のスクリプトはblock1に記述しています
宜しければ、何方かご教授お願いします
>884 hitTestかフレームに飛ぶのかどちらが実行できてないの? trace("test"); でも入れて問題の切り分けしたらどうよ
886 :
884 :2007/01/02(火) 19:30:29 ID:fuh2lKmd
>>885 どちらが、というか「指定したフレームに飛ばないので、hitTestが機能していない」という意味で書いたんですが・・・
onClipEvent(enterFrame){
if (this.hitTest(_root.player._x,_root.player._y,true)){
_root.gotoAndStop(miss);
}
}
block1に書いたスクリプトは上の通りです
miss "miss"
888 :
884 :2007/01/02(火) 19:39:13 ID:fuh2lKmd
>>887 ちゃんと機能しました。有り難う御座います。
gotoAndStopでフレーム名を指定する時は""が必要だったんですね・・・
問題を切り分けする意識を持つほうが早いお
890 :
884 :2007/01/02(火) 20:03:43 ID:fuh2lKmd
891 :
Now_loading...774KB :2007/01/03(水) 17:53:38 ID:1VF7y19w
重複スレに誤爆してしまいました 外部から変数読み込むFlash作ったんだけど、 外部ファイルの値が変わっても、Flashで表示される値は変わらない。 これはIEのキャッシュ読んでるんですか。 それとも、ファイルの更新日付とか見てるからですか? 解決する方法を教えてください
>891 キャシュを回避するためにファイル名のおしりにランダム要素を加えます filename = "test.jpg"+"?"+Math.random(1000);
得点を表示させようと思ったのですが、何故か初期値が表示されず得点が加算されてもNaNと表示されてしまいます ・テキストフィールド インスタンス名はscore 形式はダイナミックテキスト ・フレームのスクリプト onLoad = function(){ _global.point = 0; _root.score.text = 0; } ・得点アイテムのスクリプト onClipEvent(enterFrame){ if (this.hitTest(_root.(操作キャラのインスタンス名)._x, _root.(操作キャラのインスタンス名)._y, true)){ _global.point = point + 100; _root.score.text = point; } } 問題点が分かる方が居ましたらお助け願います
>>893 pointを初期化していないからじゃない?
896 :
893 :2007/01/03(水) 20:33:43 ID:bt6ZMPmc
>>894 onLoad = function(){
_global.point = 0;
_root.score.text = 0;
}
これでpointの初期化と得点の初期値表示をしているつもりなんですが、これでは駄目ということでしょうか?
>>896 onClipEvent(enterFrame){ ...
の中の右辺のpointには何で_glovalをつけてないの?
899 :
894 :2007/01/03(水) 21:36:38 ID:XoA4jDSJ
>>896 ちゃんとなるけど。
//フレーム
onLoad = function () {
_global.point = 0;
_root.score.text = 0;
};
//MC
onClipEvent (enterFrame) {
point = point+100;
_root.score.text = point;
}
いろんなところにtrace(point)いれてみる。
_global.pointとpoint変えてちゃんとって。。。ちがうだろそれw
>>898 _parentで上の階層を取得できる。
ムービークリップA
├ムービークリップB
って階層ならB.swf内に
this._parent でA.swf内のB.swfを読み込んだMC
this._parent._parent でA.swfの_rootのはず。
902 :
893 :2007/01/03(水) 21:51:26 ID:bt6ZMPmc
>>897 つけてみましたが変化はありませんでした
問題のフレームは6フレーム目なんですが、onLoad〜を1フレーム目に置くと、
何故か初期値は表示されないままなんですが得点加算のほうはちゃんと機能するんです
ちなみに1フレーム目は適当なMCを一つ置いて、そのMCに
onClipEvent (load) {
_root.stop();
}
onClipEvent (enterFrame) {
if (100 == Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100)) {
_root.gotoAndPlay(3);
}
}
上記のスクリプトを記入してローディング画面としています
>>900 _globalは一度宣言したらもうつける必要はない。
フレームに書いた_global.point = 0;をコメントにしたらNaNになる。
>>902 フレームに書くならonLoad = function () {} はいらないんじゃない?
>>903 参照は可能だけど、代入とか演算に使うと、タイムライン変数が作られてしまう。
必要ないはまちがいでしょ?
905 :
898 :2007/01/03(水) 22:12:02 ID:nDsYdH5o
ありがとうございます。それはloadmovieで指定すればいいのでしょうか?
906 :
893 :2007/01/03(水) 22:19:35 ID:bt6ZMPmc
>>903 onLoad = function () {}を省いたらちゃんと機能するようになりました
本当にどうも有り難う御座いました
907 :
903 :2007/01/03(水) 23:18:02 ID:XoA4jDSJ
>>904 あ、ほんとだ。参照だけだった。間違えました。
[訂正]参照だけなら省略可能。
_global.xx = 0;
xx += 3;
_global.xx++;
trace(xx);// 3
右辺で使ったり、+=で使うときは_globalが必要。
ってことだよね?
○フレーム目を再生してから一定時間、たとえば30秒後に指定フレームへと移動するにはどうすればいいのでしょうか? getTimer()だとSWFが再生すると同時に時間のカウントが始まってしまうので悩んでいます
>>908 setInterval
getTimer()でも、毎フレーム時間を計り続けて、スタートと現在の差が30秒くらいになったら移動
という強引な方法はなくもない。
更にfpsから30秒後のフレームを割り出して、そこに移動アクションを書くという
タイムライン手法も一応可能。
910 :
908 :2007/01/04(木) 20:47:13 ID:sNnCp3Pa
>>909 有り難う御座います。
ただ、setIntervalについて調べてみたところ、「指定されたアクションを指定されたミリ秒ごとに実行する」
とあり、自分がしたいことと少し機能が違っていました。
1&2フレーム目:ローディング画面
3フレーム目:タイトル画面
4フレーム目:ステージセレクト画面
5フレーム目:ステージA開始画面(ボタンをクリックすると6フレーム目に移動)
6フレーム目:ステージAゲーム画面(30秒以内に被弾すると7フレーム目に、30秒経過すると8フレーム目に移動)
7フレーム目:ミス画面(ボタンαをクリックすると6フレーム目に、ボタンβをクリックすると3フレーム目に移動)
8フレーム目:クリア画面(ボタンをクリックすると3フレーム目に移動)
こういうゲームを作りたく、6フレーム目のフレーム内に
onEnterFrame = function(){
_root.time.text = 30.000 - getTimer()/1000;
if (getTimer() > 30000){
_root.gotoAndStop("practice_clear");
}
}
と書いたのですが、
>>908 に書いたように1フレーム目からカウントが始まってしまい、
6フレーム目開始時には既に何秒か経過した状態となってしまう上に、getTimer() > 30000を満たした後は
どのフレームに居ても8フレーム目に飛んで、ボタンをクリックしても瞬時に8フレームに飛ばされてしまいます。
分かり難い説明で申し訳ありませんが、解決法が分かる方が居ましたらお助け願います。
あと、実物を確認したい方が居ましたらflaファイルをアップします。
明けましておめでとうございます。早速質問ですが、
<img src="
http://xxx.ne.jp/ooo.jpg " /><br class="auto"/>
<p class="auto">
明けましておめでとうございます。<br class="auto"/>
<img src="
http://xxx.ne.jp/xxx.jpg " /><br class="auto"/>
今年も宜しくお願いします。<br class="auto"/>
上記のが入っている Text.txt から、indexOf と substr を使って < > タグを除去して、
「明けましておめでとうございます。今年も宜しくお願いします。」
だけ残すようにしたのですが、文頭などに"改行"の空白が混じっていて、
「
明けましておめでとうございます。
今年も宜しくお願いします。
」
のようになります。この"改行"の空白を取り除く方法はありませんでしょうか。
>>911 改行文字は"\r"か"\n"か"\r\n"
>>910 1フレーム目でgetTimer()をして、その値を毎フレームごとにgetTimer()で得た値から引くのじゃ。
ミリ秒ごとの何が違うのかわからんが、ミリ秒単位なだけで、何秒後でも何分後でも
設定は自由だぞ?
それに一回だけのアクションだっていいのだぞ?
何事も応用できねば進まんぞ。
>>910 >「指定されたアクションを指定されたミリ秒ごとに実行する」
>とあり、自分がしたいことと少し機能が違っていました。
setIntervalで指定フレームへと移動する関数を30秒ごとに呼べばいい。
その関数が呼ばれた時点でclearIntervalすればいい。
これで30秒後に1回だけ呼ばれることになる。
915 :
908 :2007/01/05(金) 00:30:09 ID:pLAS34x5
>>913 何度か読み返してみましたが意味が理解出来ませんでした・・・すみません。
>>914 setInterval(gotoAndStop("practice_clear"), 30000);
こう書いたところ、何故かいきなり"practice_clear"フレームに移動してしまいました。
>>915 setIntervalはそんな使い方しません。
id = setInterval(GO, 5000);
function GO() {
trace("5秒後です");
clearInterval(id);
}
-----------------------------------------
>>913 が言ってるのは
getTimer()はswfが起動してからの経過時間を取得するもの
→→ 時間の流れ →→
swf起動────→1────→2
1の時点でgetTimer()したら5000(ミリ秒)が返ってきた
2の時点でgetTimer()したら8000(ミリ秒)が返ってきた
このとき1→2間の経過時間は8000-5000=3000(ミリ秒)=3秒となる。
ってこと。
917 :
908 :2007/01/05(金) 02:09:48 ID:pLAS34x5
>>916 id = setInterval(CLEAR, 30000);
function CLEAR(){
_root.gotoAndStop("practice_clear");
clearInterval(id);
}
ゲーム画面のフレームに上のスクリプトを、ミス画面のフレームにclearInterval(id);を書いたところ上手く機能してくれました。
>>913 さんの内容も何とか理解出来ました。
どうも有り難う御座いました。
918 :
911 :2007/01/05(金) 16:41:13 ID:OpqWkgWf
>>912 レスありがとうございます m(__)m。解決のヒントになりました。
何とか解決しました。
.charCodeAt(位置) で trace したら該当箇所は全て 10(→%0A→改行文字) だったので、
.charCodeAt(位置) == 10 ならそこを飛ばすように条件分を加えたら改行されずに、
「明けましておめでとうございます。今年も宜しくお願いします。」と出ました。
919 :
Now_loading...774KB :2007/01/05(金) 17:37:18 ID:d6g7AqhG
今、ポンクソフトのリアルタイムオセロ(
ttp://ponk.jp/flash_game/index.php?page=4 )を元にして、
アタック25風のパネルプログラムを作っているのですが、
どうしても1枚1枚ごとにコマ(パネル)を返すことができません(現状では挟み込むとすべてのコマが一瞬で変わってしまう)。
時間差で一枚一枚変えたいのですが、どうすればいいでしょうか。
また、actionscriptで生成したパネルをそのままにした状態でフレームを移動するにはどうすればいいでしょうか。
ご教示願えたら幸いですm(__)m。
>>919 ひっくり返すコマが決まったらその座標を配列に入れて
setIntervalで順番にひっくり返す。
WinXP、Flash8Pro使って製作をしているのですが、 attachMovieを使って配置したMCインスタンスのイベントに ASを設定するにはどうしたら良いのでしょうか?
>>921 attachした後にそのインスタンスに対して設定を書く。
もしくは、attach元のMCに最初か書いておく。
後者が楽。
923 :
921 :2007/01/07(日) 07:09:55 ID:ZgCP9GH7
attach元のMCに最初から設定を書いておく方法だと、 後でASを検索するのが困難になるので、 attachした後に設定を書く方法を教えて欲しいです。 お願いします。
removeMovieClipでムービークリップを消去すると そのムービークリップ内のタイムラインに存在したタイムライン変数も破棄されますか?
うん
927 :
925 :2007/01/07(日) 14:09:12 ID:oLi+3+h0
ありがとりんこ
わからない5大理由 1 読まない 2 調べない 3 試さない 4 理解力が足りない 5 人を利用することしか頭にない
なぜQ&Aスレにいるかわからないアホに足りない5大要素 1 読む場所を教えてあげる優しさ 2 調べる場所を教えてあげる教養 3 試した事を後進に伝えられる経験 4 理解させるコミュニケーション力 5 損得ばかり追求しない人間性
930 :
Now_loading...774KB :2007/01/08(月) 02:59:27 ID:GR6gd9Re
>>930 で、どういう目的のスクリプトなのかな。
932 :
Now_loading...774KB :2007/01/08(月) 16:53:57 ID:NuLmzy3o
質問いたします。 flashでユーザー認証のフォームを作成しているのですが ASPから変数を受け取る方法が解らず、止まっています。 実装したい機能として ・flash側でID,PASSを入力。送信。 ・受け取った変数をASP側で処理、登録可能だったら変数にok(たとえば1)を設定 ・その変数をflashで受け取り、結果を表示させる(登録完了しました等) geturlを用いて、ASPへ変数を送信する所までは進んだのですが 計算後、変数を返すところが解りません。 何方様かご教示お願いいたします。
>>932 LoadVarsではなくgetURLを使わなくちゃいけないのか?
ExternalInterfaceまわりを調べるといいと思うよ。 バージョンによってはliveconnect。
>>933 あ、いえ
値を送られるのならなんでもいいです。たまたまGETURLだっただけです
>>935 なら、LoadVars.sendAndLoad()を使ってはどうかな。
>>936 ありがとう御座います。
どうやらいけそうではありますが、ASP側の記述が解らず結局詰まってしまいました。
アドバイスありがとう御座いました。
>>936 出来ました!!
これで二日間悩んでいましたが、これで寝られます。
多sかりました
939 :
919 :2007/01/09(火) 18:09:47 ID:jsvehbML
>>920 所用で忙しかったためレスが非常に遅くなり申し訳ありませんでしたが、
回答ありがとうございました。現在はまだうまくいっていませんが、
時間の許す限りこの方法を試してみたいと思います。ありがとうございました。
940 :
Now_loading...774KB :2007/01/09(火) 18:36:22 ID:TBTylmOJ
素人です。 【実行したいこと】 1〜20フレームを1回だけ実行、20〜30フレームを3回繰り返し、 30〜40フレームを1回実行して終了 こういうことはできるのでしょうか? 20〜30フレームの繰り返しはgotoAndPlayでできるのですが、 3回繰り返しができません…教えてください(・ω・`)
>>940 例えば一つの考え方として、
最初のフレームでまず適当な変数を一つ作る(最初は0を代入しておく)。
30フレーム目で、変数の値に1足す。
で、30フレーム目で変数の値が3未満だったら20フレーム目へ戻る
そうじゃなかったら戻らないで次のフレームへ
>>941 それだと3回戻る、つまり4回繰り返しになるんじゃないか?
2未満だったら20フレーム目へ戻る、じゃないと。
>>941 //frame1
var counter:Number = 0;
//frame30
if(counter++ < 2){
gotoAndPlay(20);
}
で、ふと思ったんだけど、
1-20 20-30 30-40
って、20フレーム目と、30フレーム目がかぶってるけど、
1-20 21-30 31-40
ってことかな。
なら、
//frame30
if(counter++ < 2){
gotoAndPlay(21);
}
になる。
>>942 まさに自分でもそのように訂正レスしそうになったんだけど
直前に1足してるので案外大丈夫だった
>>944 あ、1足してから判定って考えてたのか。
if(++counter < 3){
gotoAndPlay(20); //21かも
}
と
if(counter++ < 2){
gotoAndPlay(20); //21かも
}
の違いってことだな。
まあ、どっちでもいいのかな。 こんな処理で速度気にしなくもいいけど if(countr < 2){ gotoAndPlay(20); ++counter; } ってするのが無駄がないのかも。 if(++counter < 3){ gotoAndPlay(20); //21かも } と if(counter++ < 2){ gotoAndPlay(20); //21かも } は無駄に一回足してる。
無駄に1回足してるのは気づいたけど、 毎フレーム無駄が1回出るわけじゃないからなぁ。 そこを気にするのってどうなんだろうなw あと、これは純粋に俺が訊きたいんだが、 if(counter < 2){ gotoAndPlay(20); ++counter; } って2行目でフレーム飛んでも3行目って実行されるの? 昔なんかこんな感じの処理でおかしな挙動したから ためしに順番変えたら上手くいったということがあって以来、 gotoAndPlay()は絶対最後に書くようにしてるんだが。
>>947 うは、編集ミスw
おれも順序間違ってると思う。
まあ、気にし始めたら霧がないわけですよ。
949 :
Now_loading...774KB :2007/01/09(火) 21:49:12 ID:B1GhIiah
940です。 みなさんありがとうございました、できました。 何だか細かい方に話が進んでいって素人にはさっぱりです(・ω・`) またよろしくお願いします。
950 :
Now_loading...774KB :2007/01/10(水) 14:41:25 ID:eDOvv5xt
画像を読み込んで表示させたいのですが、 画像を表示させる際にサイズ(たて、横比率)が バラバラの画像を読み込ませようとしています。 そこで、たとえばどの画像(縦長であろうが、横長であろうが)も 横を100pxで縮小して表示させたいという場合、 どのようにすればいいか、ご教授いただけないでしょうか? よろしくお願いします。
4/2=1000/500
952 :
Now_loading...774KB :2007/01/10(水) 15:19:50 ID:eDOvv5xt
ありがとうございます。 フラッシュで画像の縦、横のピクセル数を読むことってできるのでしょうか? 教えてください。
953 :
Now_loading...774KB :2007/01/10(水) 19:22:29 ID:R2MWudsF
flvを再生していて、 ある特定のキューポイントの指定のところへ くると、ムービ(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.addASCuePoint(4, "stopPoint"); }; listenerObject.cuePoint = function(e) { trace([e.info.time+"秒", e.info.name+"を通過"]); my_FLVPlybk.pause(); _root.menu.gotoAndPlay(2); }; my_FLVPlybk.addEventListener("ready", listenerObject); my_FLVPlybk.addEventListener("cuePoint", listenerObject); これを複数のキューポイントごとに、別のムービクリップを 再生させたいのですが、どのように記述を書き直せばいいでしょうか? いろいろ試しては、検証しているのですが、どうしても、うまくいきません。 なにか特別な書き方があるのでしょうか。 どうぞよろしくおねがいします。
スライドショー作成で躓いてます。
FLASH上に外部画像ファイルを読み込むattachMCと
その上のレイヤーに外部からURLとターゲットを読み込むリンクボタンを設置しています。
それらの記述はさらに外部xmlで管理していて。
全部で3つのnodeがあります。
<Slides>
<Slide jpegURL="slideimages/aaa.jpg" Target="_blank">
http://www.aaa.pdf</Slide >
<Slide jpegURL="slideimages/bbb.jpg" Target="_top">
http://www.bbb.html</Slide >
<Slide jpegURL="slideimages/cccjpg" Target="_top">
http://www.ccc.html</Slide >
</Slides>
attachMCの内容は10秒で次のnodeの要素に更新されます。
さらにないよう画更新される際this._alpha += 10;などでフェードインするように設定したいです。
構造的には理解できるのですが、
記述側から図困っています。
どなたかご教授よろしくお願いいたします。
>>953 キューポイントは使ったことないから勘で答えるけど、
switch(e.info.name){}で分ければいけるんじゃない?
>>954 XMLクラス
Flash MX 2004を使用しております。 Flashゲームを製作しておりますが、セーブがうまく出来ずに困っております。 ゲームデータは全てplaydateというオブジェクトのプロパティとして管理しているのですが、 これを一括して一時保存用オブジェクトsavedateのプロパティとすることは出来ないでしょうか。 savedate.my_property = playdate.my_property; と全てのプロパティについて記述するのもスマートじゃないですし、 savedate[“my_property”+i] = playdate[“my_property”+i]; としてforで繰り返すのも、変数名がわかりづらくなってしまうので、 何とかスマートに全てのプロパティを引用する方法は無いでしょうか。 現在製作中のものは、ゲーム中に一時保存するクイックセーブの様なものなので、 shared objectでローカルに保存する必要はありません。
>>956 データセーブはベタな書き方しかできないよ。
2次元配列とかデータクラス使ってちょっと楽にはできるけどね。
958 :
956 :2007/01/11(木) 22:00:34 ID:tK0ZKHqZ
>>957 objectAの全てのプロパティをobjectBの全てのプロパティとしたい時、
全てのプロパティについて
objectA.propertyA = objectB.propertyA ;
objectA.propertyB = objectB.propertyB ;
objectA.propertyC = objectB.propertyC ;
と書くしか無いと言うことでしょうか。
うん。参照変えるだけならいいけど、それだとセーブになんないし。
961 :
Now_loading...774KB :2007/01/12(金) 09:44:33 ID:lf4pwe+l
FlashPro8を使用しています。 複数のムービークリップに同じ命令を与えたいのですが、やり方がわかりません。 以下は私が試した例です。 1つのobjというムービークリップを複製してobjという同じインスタンス名 を持ったものを2つ作りました。そして、obj._visible=false;でそれらを 同時に消そうとしたのですが複製元のほうしか消えません。 同じインスタンス名2つに同じ命令を与えることは不可能なのでしょうか? できるだけ少ない命令で作成したいので、何か方法があれば教えてください よろしくおねがいします。
>>961 同名のインスタンスを同じ階層に置くのはNG
_mc1、_mc2などと連番の名前をつければ
>>956 が書いているようなforループで繰り返して
指示を与えることができる。
名前に規則性がないなら、for...inという手もある。
たとえば、君が双子の母親だったら、同じ名前の子供にすれば指示が一つで楽と考えますか?
むしろ、どっちの子供のことを指しているのか混乱して子供も適切に反応してくれないなど
不便さの方が先に思いつきませんか?
名前とは識別子、つまり識別するためのものなので、別の存在だとわかる名前をつけなくてはいかん。
MCも、どんなにそっくりでもひとつひとつは別の存在なので、別々の名前をもたせ個別に指示を
与える必要がある。
>>961 親のフラグを見て、子が身の振り方を決める方法もありますよ。
964 :
Now_loading...774KB :2007/01/12(金) 19:47:29 ID:0s83sW9X
actionScript3.0+Flex2です。 ascb.util.NumberUtilitiesがインポートできない旨のエラーメッセージがでるんですが、これ、インポートできますか?
>>964 エラーメッセージのインポートできない旨の...をそのままコピペしてくれるとわかるかも。
たいていはパスが通ってないとか、インポートする必要ないとかだけど。
Flash Player 9は入っているし何がなんだか分かりません
>>966 ちゃんと9で再生してる?てか、どのサンプルなのか分からない
package { import flash.display.*; import flash.text.*; //HelloWorld public class HelloWorld extends Sprite { //コンストラクタ public function HelloWorld() { //テキストフィールドの生成 var textField:TextField=new TextField(); textField.text="Hello World!"; addChild(textField); } } } この部分です 実行はSDKにはいっているSAFlashPlayer.exeを使いました
var al:Number = 10;//透明度の変化量 _root.ball_mc._alpha = 0 //ball_mcの透明度の初期値 this.ball_mc.onEnterFrame = function(){ this._alpha +=al; if(this._alpha>100 || this._alpha<0){ al = -al; } }; というスクリプトで、MCの透明度を変更しているのですが、 if文のところで、this._alpha == 100 || this._alpha == 0 とすると、うまくいきません。 100と0になったら反転させたいので、==でもいけると思うのですが… 理由をご存知の方、ご教示願います。
>>969 flexのサンプルとかやってみたの?環境作ってあれば普通に動くはずだけどね。
>>970 境界条件は==は使わない。>や>=を使う。
数値の丸めとか調べてみそ。
>>971 返答ありがとうございます。
厳密には100とか0にはならないってことですね
traceとかデバッガで追えば解る事を何故質問する
マウスポインタがステージの外にいるかどうかの チェックは可能でしょうか?
>>974 確かマウスがFlashの外に出てしまうとイベントを取得できないので、無理。
javascriptを使えば出来るかもしれない。
ステージ全体に透明なボタンを置けば可
くっそう もっとスマートなやり方があったら恥ずかしいと思って様子見してたらサラリと書かれた
978 :
Now_loading...774KB :2007/01/16(火) 17:11:31 ID:7PlC6xux
ascb.util.NumberUtilitiesはググッてもオライリーのサイトしかヒットしないのでもともとないのかもしれません。 (ちなみに本家アドビのリファレンスサイトにもありませんでした。)
こんにちわ。質問させていただきます。 動画を読み込ませているのですがその動画の一部分のみに音声がなっている状態で 動画を読み込んでいる間すべての音を消したいのですがsoundクラスでやってみましたができませんでした。 動画再生中に動画の音を消す方法をご存知の方ご教示お願いします。
on (release) { mcl.loadClip ("1.swf", _root.mc1); } を使ってmcに読み込んだswfを、解除してmcを空に戻したいのですが、 どう記述すればいいのでしょうか。
981 :
Now_loading...774KB :2007/01/17(水) 21:20:07 ID:x1pXCVow
日付チェックが必要になったのですが、それっぽい関数が見当たりません。 よろしくお願いします。 MX2004使用です。
jj
984 :
Now_loading...774KB :2007/01/17(水) 21:28:24 ID:x1pXCVow
>>982 すいません、Dateクラスのどのメソッドですか?
>>984 具体的になにがしたいかわからんのにこれ以上アドバイスできんよ
986 :
Now_loading...774KB :2007/01/17(水) 21:54:15 ID:x1pXCVow
>>985 すいません、情報不足でした。
西暦で年月日を個別に入力し、その妥当性をチェックしたいのです。
9月31日でエラーや閏年の2月29日のチェックしたいです。
ご教授、お願い致します。
>>980 mcl.unloadClip (_root.mc1);
>>986 こういうことかな
function checkDate(y, m, d) {
var date = new Date(y, m-1, d);
return y == date.getFullYear() && m-1 == date.getMonth() && d == date.getDate();
}
trace(checkDate(2006, 2, 29) )
>>988 バッチリです!!ちゃんとチェックできました!
大変助かりました!
#やっと帰ることができます。。。
答える方もすばやくしようね
質問です。 Funcitonの、applyとcallってどう違うんでしょうか?><
>>991 func.apply( null, [1,2] ); //引数はArrayで渡す
と
func.call( null, 1, 2 ); //引数はそのまま渡す
の違いしかないよ確か
994 :
991 :2007/01/19(金) 20:20:13 ID:+G1AZBGJ
>>993 レスどうもです。なるほどー。
いつもどっち使えばいいのか悩むんですが、、、あまり気にしないことにします。
func();じゃだめなんだ?w
>>994 特別な理由が無い限りcallで、Arrayで渡す必要があるならapply、でいいんじゃないかと思ってる。
特に理由が無いのにapply使うのは冗長だろうからね。
>>995 Luaじゃないっての
Luaって何?
1000(・∀・)
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。