1 名前:Now_loading...774KB [2007/08/18(土) 08:48:49 ID:g0sVH2IC] AcitonScriptのことなら 初歩的な質問でもなんでもおk 見れない、保存したい、flashを作りたいはスレ違い 下記の関連スレ、超基本的な質問へ。 ●質問する時は自分の環境を書く 書いてない場合WinXP,FlashMX2004(AS2.0以降)を前提で ●質問はものすごい勢いじゃなくて結構 ●できるだけコードも示す ●まず自分がやりたいことを明確に書く。そのために試してみた処理を書く 直前スレ ActionScript 誰かが物凄い勢いで解答するスレ 16 pc11.2ch.net/test/read.cgi/swf/1178021352/l50 関連スレ Flashの超基本的な質問はここでしろ! part35 pc11.2ch.net/test/read.cgi/swf/1184667056/l50 Flash製作初心者の質問スレッド レイヤー36 pc11.2ch.net/test/read.cgi/swf/1173006099/l50 サイト、参考書籍、関連情報は>>2-10 あたり
202 名前:Now_loading...774KB mailto:sage [2007/09/04(火) 20:47:43 ID:5sDI9kzh] ちなみにプレーヤーの設定画面でローカル記憶領域を0にすれば 該当ドメインのsolをフォルダごと消せるけど それではだめなの?
203 名前:Now_loading...774KB mailto:sage [2007/09/04(火) 21:16:53 ID:yJHGSOK3] 質問なんですが、 とある本に、あるMCがマウスカーソルの動きに 遅れてついてくるスクリプトが書いてあり、 マウスカーソルの位置でピタリと止まるには onClipEvent ( EnterFrame ) { if ( _x < int ( _root._xmouse/10)*10) { _x+=10; } else if ( _x > int ( _root._xmouse/10)*10 { _x-=10; } if ( _y < int ( _root._ymouse/10)*10) { _y+=10; } else if ( _y > int ( _root._ymouse/10)*10 { _y-=10; } } と、目標地点を移動量刻みに分割しろと書いてあったのですが、 同じようじ書いてもMCがカーソルのところで止まってくれません、 どこがいけないんでしょうか?
204 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 00:25:26 ID:E+VHtrAA] サウンドプレーヤー作成にて質問です。 目的はループ再生(もしくは“100回”など)なんですが、一時停止後 //再生再開 on(release){ Sound1.start(Sound1.position/1000, 0) } と、ボタンアクションに記述すると、一時停止したその曲で終わってしまいます。 この記述のどこに変更、もしくは足せばループ再生的な事ができますか? ループの回数は30回もあれば十分なので。よろしくおねがいします。
205 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 00:46:02 ID:n30z77if] >>203 MCの移動量が10刻み、1にしたら多少マシになるかも >>204 onSoundComplete = function(){ Sound1.start();}
206 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 01:00:45 ID:STXMbf8o] >>203 MCの位置とマウスの位置が10(移動量)以内なら、 MCの位置にマウスの位置を代入するようにする。
207 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 01:01:52 ID:Lv8sVb/D] 眠くて頭が回んないので、気づいたとこだけ答えると、 >203 int()はMath.int()のまちがいじゃまいか。 あと、そのスクリプトは構文エラーなので、括弧の閉じ方とか 予約語などをもう一度見直した方がいい。 なお、そのスクリプトでどういう動きをしたいのかが分からないが、 「遅れてついてくるMC」なら、俺はこうする onClipEvent ( enterFrame ) { _x -= (_x - _root._xmouse) / 10; _y -= (_y - _root._ymouse) / 10; } >204 ボタンアクションにそーゆーことを記述するのはめんどいのでオススメしない。 (つーか「クリップアクション」自体、なるべく避けた方がいいと思う。迷子になりやすいし) とりあえず、そのスクリプトの「Sound1」を_rootから始まる場所に書き換えてみよう。 そのままだと、ボタンが置かれたMCで定義したSound1に対して あれこれ仕様という意味になるから、もっと上で定義していたら、とうぜん空振りする。
208 名前:200 mailto:sage [2007/09/05(水) 01:08:38 ID:l+jAGjWi] >>201 目的は、GUIとまでは行きませんが、solファイルを含むフォルダ操作です。 フォルダの作成に加えて変更・削除が出来れば、かなり自由度が増えると思いました。 >>202 ローカル記憶領域を0 試してみます。
209 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 01:20:11 ID:/9kyThfX] >>208 Flashでフォルダ操作やファイル操作は出来ません。
210 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 01:39:27 ID:Lv8sVb/D] >208 localSO.data.rootfolder.savedata1=保存内容 とかじゃだめ? これならdataプロパティ以下の要素を、色々いじれるが。 ファイルを直接作ったり消したりしたいなら、あきらめたほうがいいかも。
211 名前:200 mailto:sage [2007/09/05(水) 02:25:57 ID:l+jAGjWi] >>209-210 複数のフォルダ内の複数のsolファイルに色々な項目(例:身長,体重,年齢など)を 詰め込みたいので出来れば、フォルダ単位で消去・変更したいです。 なお、「ローカル記憶領域を0」は、まだ試していません。
212 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 02:48:47 ID:Lv8sVb/D] >211 var root = new Object(); root = SharedObject.getLocal("root", "/"); saveData1 = SharedObject.getLocal("root/saveData1", "/"); root.data._content = "これはカレントのデータだお"; saveData1.data._content = [{height:"209cm", weight:"135kg", name:"G.馬場"}, {height:"191cm", weight:"102kg", name:"A.猪木"}]; delete saveData1.data._content; 末尾の delete saveData1.data._content; を付けたり外したりするなどして、 *solファイルの有り無し検索してみよう。 自分で実験するヒマを惜しんではいけない。
213 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 02:50:53 ID:Lv8sVb/D] 申し訳ない、>212の1行目var root = new Object(); は不要です。 ・・・ダメだ、頭が働かないのでもう寝る。
214 名前:200 mailto:sage [2007/09/05(水) 03:30:38 ID:l+jAGjWi] >>212-213 てんきゅう
215 名前:202 mailto:sage [2007/09/05(水) 04:11:35 ID:oq2Wn5BF] >>200 「ローカル記憶領域を0」は無視でいいよ 話が良くわかってなかった。 フラッシュからASでやれることじゃないし。
216 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 14:11:01 ID:ps3RHVx4] 外部テキストを読み込むクラスなんですけどテキストが返ってこないんです。 どうすればテキストの内容を返すことができるのでしょうか。 public class Textload extends Array { var loader:URLLoader; var datB:Array = new Array(); public function Textload() { } public function textloading():Array { loader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeHandler); loader.load(new URLRequest("test.txt")); } public function completeHandler(evt:Event):Array { var datA:Array = loader.data.split("\r"); for(var i:Number=0; i<datA.length; i++){ datB[i] = new Array(); datB[i] = datA[i].split(","); } return datB; } var playerdata:Array = new Textload(); trace(playerdata.textloading());
217 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 14:18:34 ID:8MQmnQEW] 待ってないから
218 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 15:33:36 ID:be+ocy7a] >>216 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
219 名前:203 mailto:sage [2007/09/05(水) 22:41:07 ID:v6ZxKUeG] ご回答ありがとうございました >>207 Math.int() にしたらエラーが出ましたが、 onClipEvent ( enterFrame ) { _x -= (_x - _root._xmouse) / 10; _y -= (_y - _root._ymouse) / 10; } の方法で解決しました。 なぜ、うまくいくのか じっくり考えたいと思います。
220 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 23:06:49 ID:bqmYmjyS] paraflaでFLASHを作っています。 左クリックでのボタン処理ができるように、 右クリックを押すことでアクションをしたいのですが、 どうすれば出来るでしょう?
221 名前:Now_loading...774KB mailto:sage [2007/09/05(水) 23:13:09 ID:Oadww5zB] コントロールパネルで左利き用マウスに設定すればいいよ
222 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 01:00:17 ID:M+Pv+M6l] >219 自分自身の座標と、目標の座標の10分の1づつ接近していく。 近づけば近づくほど、「10分の1」の値は小さくなる=近づき方が遅くなる ただし近づいてはいるので、いずれある時点でその差は1を下回る=目標値点で止まる ただ、止まっているときでも常にカーソルへの移動を試みているので 無駄を省きたいので有れば「マウスカーソル移動でMC移動開始」と 「移動距離が1を切ったらonEnterFrameをやめる」を 実装してもいい(必要ないと思うならしなくてもいいが)。 >220 Macのことを考えてみよう。 (じつは、右クリックはコンテクストメニューなら割り付けられる。方法は勉強してちょうだい)
223 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 02:08:02 ID:9lIbtxB2] >>220 ,222 AS3.0限定かもしれないけど右クリックのアクションも可能だと思うよ。 前に見た解説サイト見つけられないけど・・・ paraflaでもできないわけじゃないかも。
224 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 05:53:23 ID:ARIbZD1C] >>216 きちんとヘルプを読めばサンプル載ってるし、そんな書き方しないと思う。 適当に書いて動きませんなんとかして、はひどすぎ。
225 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 10:56:05 ID:IA+i6VgC] >>224 いや、適当というつもりはなかったです。 return datB;のところでtrace(datB)するとテキスト取得の確認ができたので、 関数に型名つけてreturnで返そうと思いました。 public function completeHandler(evt:Event):Array {...} だけだとundefinedとでたので、public function textloading() {...}のほうにも 型名つけないとまずいのかと思ったのですが、そうするとエラーが出てしまい、 どうすればよいのか解らなくなり質問しました。
226 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 11:03:19 ID:ARIbZD1C] >>225 ん、まず、なんでArrayから派生させてるのかがわからん ハンドラのreturnって何が受け取るの?
227 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 12:57:09 ID:IA+i6VgC] >>226 swfのタイムラインに以下を記述してtrace結果でテキストの内容を出そうとしました。 var playerdata:Array = new Textload(); trace(playerdata.textloading());
228 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 13:09:51 ID:ARIbZD1C] >>227 答えがそれかよw。Classを使ってどうこなら まず、Javaなりの入門書を一冊やって、OOPを勉強してからだな。
229 名前:Now_loading...774KB [2007/09/06(木) 16:14:27 ID:DwFYQP3i] バイナリデータを埋め込んで動的に読み込みたいんですが、 ↓のように定義して [Embed(source='data/stage1.dat', mimeType="application/octet-stream")] private var GameData1:Class; ↓のようにクラスへの参照を取得しようとすると var classRef: Class = getDefinitionByName("GameData1") as Class; ↓のようなエラーが表示されてしまいます。 ReferenceError: Error #1065: 変数 GameData1 は定義されていません。 Embedで埋め込んだクラスにはgetDefinitionByName()できないのでしょうか? どうにかクラス名を動的に指定して読み込む方法はないでしょうか。 環境はWinXP/Flex2 SDK/Flash9 r28です。
230 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 16:18:27 ID:eVJwwHFF] そんなもんクラスじゃねーだろ 好きに読み込め
231 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 16:20:16 ID:eVJwwHFF] なんだか頭の不自由な奴が自分ルールでクラスだのなんだのを勝手に 定義してわけわからん質問してるのが多いな。同じ奴か? 基本的な本1冊読めよ。馬鹿すぎる。
232 名前:229 [2007/09/06(木) 16:47:32 ID:DwFYQP3i] すみません。 普通のアセットクラスだと思うのですが、どの辺りが間違っているのでしょうか。
233 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 16:59:08 ID:ARIbZD1C] >>232 Flexでの書き方はしらんが、知ってる人でもその質問では答えられんと思う。 何をやりたいのかを書いて、具体的なソースを提示しないとわからんよ。
234 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 17:04:44 ID:ARIbZD1C] だいたい >バイナリデータを埋め込んで動的に読み込みたいんですが、 埋め込んで動的にって。。。どういうことだよw
235 名前:229 [2007/09/06(木) 17:36:43 ID:DwFYQP3i] 質問が下手ですみません。 ゲームのステージデータを埋め込んで、各ステージの初期化時に 読み込みたいのです。 public class Sample01 extends Sprite { [Embed(source='data/stage1.dat', mimeType="application/octet-stream")] private var GameData1:Class; [Embed(source='data/stage2.dat', mimeType="application/octet-stream")] private var GameData2:Class; ... } といったようにSWFファイル内にバイナリデータのアセットとして埋め込んでおいて、 以下のようなステージデータのロードメソッドを呼ぶつもりでした。 動的にというのは、ステージ番号を指定してgetDefinitionByName()に渡す文字列を 変えたいという意味で使いました。 private function loadStageData(stage: int) { var classRef: Class = getDefinitionByName("GameData"+ stage) as Class; var GameData: ByteArray = new (classRef()); } 埋め込んだデータがJPEG画像などでも同様でした。 別の方法でも構わないのですが、同様のことを実現するにはどういったやり方が あるでしょうか。宜しくお願いします。
236 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 17:44:14 ID:ZRyepadd] だからそれのどこがクラスだよ 今のあんたに何説明しても無駄
237 名前:229 [2007/09/06(木) 18:08:28 ID:DwFYQP3i] >>236 クラスについては認識が間違っているということで、再度勉強させていただきます。 ステージデータについては、当初以下のような記述で動作していたのですが、 クラス名の指定をgetDefinitionByName()に置き換えられないかと試行錯誤して いるところでした。この違いについて、まだよく理解できていません。 private function loadStageData(stage: int): ByteArray { var data: ByteArray; switch (stage) { case 1: data = new ByteArray( new GameData1() ); break; case 2: data = new ByteArray( new GameData2() ); break; ... } return data; } ステージデータは100面分用意する予定なので列挙するのはできれば避けたいと 思っています。>>235 にも書きましたが、私の書いたやり方がよりも良いやり方が あれば、お教えいただけると幸いです。
238 名前:229 mailto:sage [2007/09/06(木) 18:12:32 ID:DwFYQP3i] バイナリデータを読み込む部分ですが、popforgeというサウンドライブラリの SoundFactory.classを参考にしました。Classと指定することについては、そう いうものだと思って、あまり深く考えていませんでした。
239 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 18:17:06 ID:ZRyepadd] 埋め込む必要があるなら文句いわねーで列挙しろ めんどくさかったらコードを書くマクロを作れ 実行時に読み込むだけで事が足りるならクラス化しねーでファイル読み込め
240 名前:229 [2007/09/06(木) 18:45:02 ID:DwFYQP3i] 列挙するのを避けたいというのは面倒だという理由ではなく(それこそマクロ等で 処理すれば良いので)、保守性や可読性の観点から現実的ではないと判断しました。 そこで調べた結果行き着いたのがgetDefinitionByName()でしたが、意図した通りに 動作させることはできませんでした。 そもそもgetDefinitionByName()はこのような用途には使えないのか、使い方が悪いのか。 他のやり方があるのか、あるいは列挙以外に方法はないのか…というのが、私の知りたい ことです。宜しくお願いします。 # 外部ファイルから読み込む案もご提示いただきましたが、今回はデータを埋め込む場合で # お願いいたします。
241 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 18:50:49 ID:ZRyepadd] 使い方というより頭が悪いな
242 名前:229 [2007/09/06(木) 18:59:27 ID:DwFYQP3i] 正直、頭は悪いほうなので、独力では解決できずに助言を求めている次第です…。 内容の無い、悪意の回答はご遠慮いただけると幸いです。
243 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 19:38:29 ID:wXAs/28X] var classRef:* = new getDefinitionByName("GameData"+ stage)() か var GameData: *= new (classRef)() じゃね?知らんけど
244 名前:229 [2007/09/06(木) 20:02:42 ID:DwFYQP3i] >>243 ありがとうございます。 早速試してみましたが、「getDefinitionByName()をコンストラクタとして 呼び出すことはできません」とのエラーが出てしまいました。 型宣言を「*」にする部分を参考にさせていただいて以下のようなコードも 試してみましたが、>>229 同様の定義されていないエラーとなってしまいました。 var classRef:* = getDefinitionByName("Sound1"); var GameData:* = new (classRef)();
245 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 20:18:08 ID:wXAs/28X] 間違えた var classRef:* = new (getDefinitionByName("GameData"+ stage))()
246 名前:229 [2007/09/06(木) 20:26:33 ID:DwFYQP3i] >>245 ありがとうございます。 やはり、定義されていないエラーになってしまいます。 getDefinitionByName()に渡している文字列が悪いのかもしれませんが、 traceを見ても「GameData1」になっているので、間違ってはいないと 思うのです。。。 すみません。 >>244 では「Sound1」になっていますが、効果音読むところをコピーして しまいました。正しくは「"GameData"+ stage」と書いてあります。
247 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 22:05:25 ID:Ggf2GCKz] >>246 var classRef: Class = getDefinitionByName("GameData1") as Class; var gameData: GameData1 = new classRef(); これでどう? GameData1がパッケージ内にあるなら、パッケージ名も書かなきゃだめだよ。
248 名前:229 [2007/09/06(木) 22:24:58 ID:DwFYQP3i] >>247 ありがとうございます。 コンパイル時に以下のようなエラーとなってしまいました。 型が見つからないか、コンパイル時定数ではありません : GameData1。 var GameData:GameData1 = new classRef(); ^ GameData1は現在Sample01というクラスの内部でEmbedしている箇所で宣言しています。 パッケージ名は親(?)のSample01には特に指定していないので、GameData1にも付かない のだと思っています。こういう場合のパッケージ名がどうなるのかは、よく分かって いません。ソースは以下のような感じです。 --- package { import flash.display.*; ... public class Sample01 extends Sprite { [Embed(source='data/stage1.dat', mimeType="application/octet-stream")] private var GameData1:Class; [Embed(source='data/stage2.dat', mimeType="application/octet-stream")] private var GameData2:Class; ... } } ---
249 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 22:57:16 ID:IvtJX8zy] っ getDefinitionByName("Sample01_GameData1") as Class;
250 名前:Now_loading...774KB mailto:sage [2007/09/06(木) 23:20:52 ID:IvtJX8zy] っ var GameData:* = new (getDefinitionByName("Sample01_GameData1") as Class);
251 名前:229 [2007/09/06(木) 23:31:26 ID:DwFYQP3i] >>249 うああ、できました!ありがとうございますっ…! クラスの中のクラス(どう呼ぶのか分かりません)名は、そのように 記述するのですね。勉強になりました。 >>249 さん、答えていただいた皆様、本当にありがとうございました。
252 名前:216 mailto:sage [2007/09/07(金) 10:21:44 ID:/y5tc2Xf] >>228 public class Tashizan { public function Tashizan() { } public function sum(numA:Number,numB:Number):Number { return numA+numB; } } var goukei:Object = new Tashizan(); trace(goukei.sum(15,3)); //18 のようにreturnで返したかったんですがなにが問題なのでしょうか? 問題点だけでも教えていただけませんか。
253 名前:Now_loading...774KB mailto:sage [2007/09/07(金) 14:46:11 ID:QESz89NL] >>216 関数の外にreturn置いてるのとか継承と型指定を取り違えてる風な書き方 3個以上間違いがあると誰も答えてくれないだろうから質問するときは問題点を 絞り込むように単純化した方がいいよ。
254 名前:Now_loading...774KB mailto:sage [2007/09/07(金) 17:27:19 ID:G6/Ml+Up] >>252 Arrayから派生してるのは何故? returnは何が受け取るの? レスしても、ちゃんと答えない質問者にはレスする気にならん。
255 名前:Now_loading...774KB [2007/09/08(土) 22:27:58 ID:rf8QzVNl] WinXP-ProでFlash8-Pro(Ver8.0)を使っています。 lineStyle()で線を点線(あるいは破線)にすることは可能でしょうか? 一応ヘルプを見ましたが、分かりませんでした。
256 名前:Now_loading...774KB mailto:sage [2007/09/08(土) 23:10:39 ID:gH/pK9oI] 破線はなかったはず。てか、Google。 ttp://www.gac.jp/article/index.php?stats=question&category=19&id=11753&command=msg
257 名前:Now_loading...774KB [2007/09/09(日) 01:52:20 ID:46xyRfSe] 環境はWin, CS3, AS3です。 これまでは_urlでswfの置かれているパスを取得できたと思うんですが、 AS3の場合はどうすればいいでしょうか。 よろしくお願いしますm(_ _)m
258 名前:Now_loading...774KB mailto:sage [2007/09/09(日) 02:38:29 ID:lVJTecGh] >>257 _url → flash.display.Loader.contentLoaderInfo AS2と比べると使い方はちょっと面倒かもな。 AS3ではどうするの?という質問はまず↓を見てみよう。 ttp://livedocs.adobe.com/flex/2_jp/langref/migration.html
259 名前:Now_loading...774KB mailto:sage [2007/09/09(日) 04:21:40 ID:oX5rL85l] >>257 trace(loaderInfo.loaderURL);
260 名前:255 mailto:sage [2007/09/09(日) 04:54:02 ID:DAvWqwjE] >>256 有り難うございます。 なるほど、細かい点(線分)の集合ですね。 あー、お腹の調子がおかしい・・・ ←独り言
261 名前:Now_loading...774KB mailto:sage [2007/09/09(日) 14:28:39 ID:AciRr+jo] Javaをちょこっとかじってて、ActioScript初めてなんですけど、 flaファイル上のMovieClipにASファイルのクラスを適用することって出来るんでしょうか?出来れば軽くサンプルを書いてもらえるとありがたいんですが… ASで定義したクラスのメソッドでMovieClipの操作を行ってみたいんですが・・・
262 名前:Now_loading...774KB mailto:sage [2007/09/09(日) 14:35:15 ID:oX5rL85l] >>261 できる
263 名前:Now_loading...774KB mailto:sage [2007/09/09(日) 19:15:13 ID:QumQM+cK] 初歩的な質問ですみません。 LoadVariables()で読み込んだファイル名のMP3を再生させようとするのですが、 loadSound()でエラーが出てしまいMP3が読み込めません。 loadVariables("soundplay.txt", _root); my_snd01 = new Sound(this); my_snd02 = new Sound(this); my_snd01.loadSound(_root.sound01, false); my_snd02.loadSound(_root.sound02, false); soundplay.txtの中身: sound01=sound01.mp3&sound02=sound02.mp3 何故かloadSound()をコメントアウトすると変数がちゃんと拾えているようですが、 loadSound()があるとundefinedが出て読み込みエラーが出るようです。 これは何故でしょうか…詳しい方お願いします。
264 名前:257 mailto:sage [2007/09/09(日) 20:12:11 ID:46xyRfSe] >>258-259 ディモールトグラッツェ!!!! ありがとうございました、助かりました。
265 名前:Now_loading...774KB mailto:sage [2007/09/09(日) 20:55:39 ID:itq/IsYb] >261 俺も最初は苦労したくちなので、丁寧におしえちゃうぜ。 でもな、バージョン名くらいは書いて下さい。頼むから。 ライブラリウィンドウで、ムービークリップの リンケージ名称設定をしてから・・・ MXの場合: function クラス名(){プロパティを列挙} クラス名.prototype=new MovieClip(); クラス名.prototype.メソッド名=function{処理} クラス名.prototype.メソッド名=function{処理} : Object.registerClass(リンケージ名,クラス名); MX2004の場合: ムービークリップのリンケージ名の下に AS2クラスの項目があるので そこにクラス名を記入。 ※ちゃんとクラスはMovieClipをextendsしてるよね?
266 名前:Now_loading...774KB mailto:sage [2007/09/09(日) 23:46:14 ID:AciRr+jo] >>265 すいません、遅くなりました Flash8 (AS2.0?)です ------ class Hoge extends Movieclip { private var mc:MovieClip; function hoge(target_mc:Movieclip){ mc = target_mc; } … てかんじにして、flaファイル側に hoge = new Hoge(リンケージ名); hoge.hghg(); という感じでやってたんですが、反応が無いみたいです; 265の方法を試してみます。
267 名前:Now_loading...774KB mailto:sage [2007/09/09(日) 23:54:50 ID:BVXAhwVo] >266 var hoge:Hoge=new Hoge(引数(インスタンス名とかな)); インスタンス名.onPress=function(){ hoge.ghgh(); } 既述通り、リンケージが楽 つーか、基本はggrば?
268 名前:Now_loading...774KB mailto:sage [2007/09/09(日) 23:58:35 ID:itq/IsYb] >266 俺は>265だが、8かー。MX2004使いだから的はずれかもしれんが 一応>266で気になったことは、 「MovieClipはattachで生成するのであって、newで生成しない」 (ただしFlexはnewで生成するが……) という、基本ルールを知っているかどうか。
269 名前:Now_loading...774KB mailto:sage [2007/09/10(月) 00:04:53 ID:IlxYGmqe] >268だけだと意地悪なので、いちおうコードも載せておくよ。 _root.attachMovieClip("リンケージ名", "MC名",深度, {プロパティ名:値}); この「リンケージ名」に、さっき定義したリンケージ名をいれればOK。 ちなみに俺が良くやる方法は、 for (i=0; i<個数; i++){ MC[i]=_root.attachMovieClip("リンケージ名", "MC名"+i,i); } と、イコールつなぐことで、「参照」を取得できる。こうすると、いちいちパスを書かなくても MC[2]._alpha=50; なんてことができて、スゲーらくちんw
270 名前:Now_loading...774KB mailto:sage [2007/09/11(火) 12:54:39 ID:Ln/IIDsc] デザイナー初心者です。 フラッシュ制作で、キューブが回転して奥から転がってくるものを依頼されました。 回転するものはあっても転がってくる様なものは探しても見つかりませんでした。 その様なサイトかスクリプトがあれば教えて下さい。 よろしくお願いします。
271 名前:Now_loading...774KB mailto:sage [2007/09/11(火) 13:01:55 ID:UA9VZCW1] >270 誘導 ttp://pc11.2ch.net/test/read.cgi/swf/1187880560/
272 名前:Now_loading...774KB mailto:sage [2007/09/11(火) 13:35:00 ID:Ln/IIDsc] >>271 有難うございます そちらに行ってみます(`・ω・´)
273 名前:Now_loading...774KB mailto:sage [2007/09/11(火) 16:27:25 ID:ZKuw48zy] 質問です。環境はWinn2000・Mx2004です。 式の書かれた外部テキストファイルを読み込ませ、 それを解釈させて、結果をtrueかfalseで得ようとしています。 例えば、他の処理系風に書けば: res=eval("(a==1)&&((b<250)||(name=\"Dave\"))"); trace("resu;t: "+ res); で、trueまたはfalseを返したいのですが、ActionScriptのevalでは そう言うことができません。 次善の策として、JSONを使い: [ { "left" : "a", fugou : "==", "right":1}, {……}, {……} ] などと言うことも考えたのですが、どのように処理していいのかが まるで思いつきません。 どのようにするのがよいでしょうか?
274 名前:Now_loading...774KB mailto:sage [2007/09/11(火) 20:31:38 ID:yONnbTi8] >>273 javascriptでできるならASから呼んでやればいいんじゃない?
275 名前:Now_loading...774KB mailto:sage [2007/09/11(火) 21:44:44 ID:4GLdl+a5] >>273 言ってることがいまいちよくわからんが、 >式の書かれた外部テキストファイルを読み込ませ の部分はASで実装できてるの?
276 名前:273 mailto:sage [2007/09/11(火) 21:57:50 ID:ZKuw48zy] >274 できればswf内で完結させたいと思っています。 >275 はい。文字列を読み込ませ、それをtraceでそのまま表示させることは できています。 >273のスクリプトを正確に書き直すと、 condition.txtの内容: (a==1)&&((b<250)||(name==\"Dave\")) flaファイルのスクリプト: lv=new LoadVars() lv.onData=function(string){ res=eval(string); //この行はあくまでも例示です trace("result: "+ res); }; lv.load("condition.txt"); です。
277 名前:Now_loading...774KB mailto:sage [2007/09/11(火) 22:51:35 ID:b9HnqLsx] javascriptに投げてevalで計算した結果をexternalinterfaceで貰えばいいんじゃ?
278 名前:Now_loading...774KB mailto:sage [2007/09/11(火) 23:28:26 ID:x8I9fL8z] >>273 逆ポーランド記法にできれば結構楽よ // 変数は自分で管理 var MyVariables = {a: 1, b: 100, name: "foo"}; // 変数と数値と文字列の区別は適当に目印つける var MyCondition = ["V:a", "N:1", "==", "V:b", "N:250", "<", "V:name", "S:Dave", "==", "||", "&&"]; var _stack = new Array(); for(i=0;i<MyCondition.length;i++){ var t = MyCondition[i]; switch(t){ case "==": var wk = _stack.pop() == _stack.pop(); _stack.push(wk); break; case "&&": var wk = _stack.pop() && _stack.pop(); _stack.push(wk); break; case "||": var wk = _stack.pop() || _stack.pop(); _stack.push(wk); break; case "<": var wk = _stack.pop() > _stack.pop(); _stack.push(wk); break; default: // 演算子以外は項である var type = substring(t, 1, 2); var term = substring(t, 3, t.length-2); switch(type){ case "S:": _stack.push(term); break; case "N:":_stack.push(parseInt(term)); break; case "V:":_stack.push(MyVariables[term]); break; } break; } trace("「"+t+"」を処理した後のスタックの状態"); for(n=0; n<_stack.length;n++) trace("["+n+"] "+_stack[n]); } trace("result:" + _stack[0]); // 演算結果が[0]に残る
279 名前:Now_loading...774KB mailto:sage [2007/09/12(水) 01:24:39 ID:t0Nd0J4u] >>273 なんかそれ最近、どこぞの誰かのBlogで読んだような気が・・・。 これかな? ttp://d.hatena.ne.jp/flashrod/
280 名前:273 mailto:sage [2007/09/12(水) 12:14:04 ID:g8zl/LOd] 皆様、ありがとうございます。 >>277 調べたところ、それはFlash8の機能のようです。またいずれにしても WEBブラウザの力は借りたくないと考えています。 >>278 逆ポーランド記法は初めて知りました。 ただ運用面を考えると、あまり馴染みがない記述方法になるので カッコなどをつかう記述を、その処理に落とし込めればベストです。 >>279 試しにソースをコピーしてみると、エラーが出たのですが、 オブジェクト定義で、要素の部分に'*"といった文字列を与えているためと 思われます(Flash8ではこの書き方は許されているのでしょうか?) ただ考え方はソースからなんとなく見いだせましたので、 これでカッコに対応していれば、MX2004風味に書き直せるかも知れません。
281 名前:Now_loading...774KB mailto:sage [2007/09/12(水) 12:55:34 ID:HtdHDwog] >>280 やりたいことを明確に言わないとよくわからん ASでの数式パースのロジックを知りたいって事か?
282 名前:273 mailto:sage [2007/09/12(水) 23:48:17 ID:g8zl/LOd] >>281 やりたいことは、 「FlashMX2004を使って、 テキストファイルに記載された論理式を解釈して結果を得る。 ただし、WEBブラウザなどは使わず、swf単体で行う」 です。 正直、そのために何をどうすればいいのかが全く分からなかったので こういう書き方をしました。 (正直、ここまで大がかりなものとは思っていませんでした……) 皆様の解答を見ていて、数式(論理式)のパース(構文解析と言う意味で いいでしょうか?)ができれば、上記の目的は達成できると分かりましたので、 その方法を教えていただけると有り難いです。 (別の方法がある!というのであれば、そちらでもけっこうです) 目下のところは、>>278 で紹介されている方法が逆ポーランド記法でなく、 通常の論理式対応のものであればベストです。
283 名前:Now_loading...774KB mailto:sage [2007/09/13(木) 01:59:06 ID:beX3qIXs] なんで逆ポーランドなのか考えた方がいいんじゃまいか?
284 名前:Now_loading...774KB mailto:sage [2007/09/13(木) 02:50:33 ID:wqdou11I] >>282 WEBブラウザなどは使わず、swf単体で行う スタンドアローンなら、Exeでパブリッシュという方法もある。 但し、1.5MB以上になる。 ちなみに、俺も同じような文章解析(出力データ解析)をやっているが、 対象の文章の内容と解析目標によってStirigクラスのメソッド&プロパティを ひたすら使い分けることでしか解決は無いと思う。 まずは、簡単な特徴的な文章(1行程度)を試しにパースしてみよう。
285 名前:Now_loading...774KB mailto:sage [2007/09/13(木) 02:52:46 ID:wqdou11I] 284だ。 Stirigクラス → Stringクラス
286 名前:Now_loading...774KB mailto:sage [2007/09/13(木) 13:13:43 ID:ZpQ1BVYO] 下記のアクションをムービークリップで動かしました テンキー1・3で(座標変化で)速度をリアルタイムで変化させたかったのですが、fpsが低い設定の場合キー入力しても再描画時にムービーの速度に変化がないことが 多々でした。(試しにfps1で試したところ再描画までに入力したキー分の加速が反映されていませんでした) onClipEvent (load) { x_move = -1; kasoku =10; function movetxt() { if (Key.isDown(97) == true) { x_move -= kasoku; } else if (Key.isDown(99) == true) { x_move += kasoku; } else { } _x += x_move; } } onClipEvent (enterFrame) { movetxt(); } 試しにキー押しの回数を調べるASを配置してみたところ、そちらは再描画までに押した回数が反映されていました。 この時も速度のほうは再描画までに反応を受け付けない時間(偶然や読み込みラグなどではなく)もあり結果は反映されませんでした。 読みづらい文・説明で申し訳ありません。 速度のキー入力リアルタイム変化について良い方法などありましたらお願いします。 環境はMacromedia Flash Pro8 AS2・WindowsXP・IE6です
287 名前:Now_loading...774KB mailto:sage [2007/09/13(木) 15:38:55 ID:BG4RnXCc] >>286 要は左右方向の加速度を変化させたいということか? movetxt();内で結果位置を指定するのではなくて、(外に出して) onClipEvent (enterFrame)内で指定したら?
288 名前:Now_loading...774KB [2007/09/13(木) 15:43:32 ID:hmnUxqDU] 人間の色んな動作のアニメーションを作成しているんですが転ぶアニメーション の参考になるサイトとかないでしょうか? 例えば歩くアニメーションだったらこんな感じで www.training.co.jp/flash/walk.html 転ぶ以外にも人間の基本動作のアニメーションで参考になるものがあったら教えてください
289 名前:Now_loading...774KB mailto:sage [2007/09/13(木) 15:46:24 ID:HEunF0E/] >>288 マルチは氏んでください
290 名前:Now_loading...774KB mailto:sage [2007/09/13(木) 16:18:07 ID:BG4RnXCc] >>286 setInterval() を使い、fpsに関係なく描画させる場合には updateAfterEvent() もある。
291 名前:Now_loading...774KB mailto:sage [2007/09/13(木) 16:39:47 ID:cYxdeUwj] >286 単純に変数操作はon()でやればいいんじゃないの?
292 名前:Now_loading...774KB [2007/09/13(木) 16:52:43 ID:JtxDSMb2] 環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0) キーコードの認識で質問です。 2つのキー:BackSpaceとShiftを同時に押した時のアクションをキーリスナーで指定 したいのですが、上手く出来ません。 下は第一目標として、traceで "Back/Shift" を出力させるものですが何も出ません。 myKey = new Object(); myKey.onKeyDown = function() { if (Key.getCode() == 8 && Key.getCode() == 16) { trace("Back/Shift"); } }; Key.addListener(myKey); どうしたら良いでしょうか? 動作はプレビュー上で行い、『キーボードショートカットを無効』にチェックを入れて います。なお、BackSpace,Shift各単独のキー動作はOKです。
293 名前:286 mailto:sage [2007/09/13(木) 17:02:05 ID:ZpQ1BVYO] とても早い書き込みありがとうございます。 >>287 さん >加速度の変化 そうです。ただ、何故かわかりませんが1fpsで動作させ、1s内にテンキーで加速を2回押しても一回分しか受け付けていない。 という状況に困っていました。 実際のところ1fpsという低速で動かすことはないのですが、より正確な方が良いと思いまして。 enterFrameにて指定してみましたが低速だと同じ結果になってしまいました。 OnClipEvent(enterFrame)では難しいのですかね。 説明不足な点が多くてすいません。 >>290 さん 描画のタイミングを上げ判定の隙間を減らすことが出来るんですね。 これなら限りなく処理が自然になりそうです。早速試してみようと思います。 お二方レス大変感謝です。 OnClipEvent(enterFrame)の判定の落とし穴の方も解決したら書き込みさせて頂きます。
294 名前:Now_loading...774KB mailto:sage [2007/09/13(木) 17:47:45 ID:X66+axMg] >>282 数式解析のプログラムは結構出回ってる。 swfだけで完結させたいというなら、そのコードをActionScriptにパースすりゃよい。 ただし、ものすごく面倒 ちなみにそういう処理は、昔の死に言語が活躍してる時代の処理。 斜め上な開発をしていることに気づき、設計を考え直した方がよい。
295 名前:286 mailto:sage [2007/09/13(木) 17:54:29 ID:ZpQ1BVYO] >>290 さん すいません更新忘れて見落としていました。 クリップイベントにしなければ上記のようなことにならないんでしょうか。 ご指摘ありがとうございます。
296 名前:Now_loading...774KB mailto:sage [2007/09/13(木) 18:09:50 ID:tNNYUyG0] >>292 getCode() の値が8かつ16ってあんまりだろw if (Key.isDown(8) && Key.isDown(16)) { trace("Back/Shift"); }
297 名前:292 mailto:sage [2007/09/13(木) 18:23:52 ID:JtxDSMb2] >>296 有り難うございます。 getCode()の値は1つなんですね。
298 名前:Now_loading...774KB mailto:sage [2007/09/13(木) 18:45:14 ID:3nDCCNF9] >>297 trace()すればわかることだし、ヘルプにも書いてあるよ。 戻り値は数値; 最後に押したキーのキーコードを表す整数。
299 名前:273 mailto:sage [2007/09/14(金) 02:28:42 ID:IuUz1TI2] お返事が遅くなってしまいすみません。 >283 やはり「難しいから」なんですね。取り組んでみて実感しました。 >284-285 >まずは、簡単な特徴的な文章(1行程度)を試しにパースしてみよう。 こちら、>278のソースを参考に作ってみようと思います。 方針としては、文字列を先頭から1文字づつバッファーに貯めて行き: ・数字が出現したら、演算子か英文字(プロパティ)が出るまで連続して読み込み、 そのバッファーを「項」の配列にスタック ・演算子が出たら、数字か英文字が出るまで連続して読み込み、そのバッファーを 「演算子」の配列にスタック ・それ以外はプロパティ。演算子が出るまで連続して読み込み、そのバッファーを 「項」の配列にスタック ・演算子の文字列に優先順位をつけ、その優先順位の高い演算子を 挟んでいる項を演算し、後ろの項をスプライス(削除)し、この項とその次の項を…… を繰り返して行全体を処理 ・優先順位が0になるまで、着目優先順位を1づつ下げながら繰り返す ・項が1つになったとき、それが解 カッコの処理は、開きカッコがでたら、その後の開きカッコの個数を数え、同数の閉じカッコが出たら バッファーの内容を引数にして再帰呼び出しするようにしてみます。 >294 最悪、上記のことで実現できなければ、JSONで [ { "left" : "a", "fugou" : "==", "right" : "1", "renketsu" : "||"}, {式}, {式} …… ] 等の記述をするように、仕様を考えてみます。
300 名前:Now_loading...774KB mailto:sage [2007/09/14(金) 10:01:05 ID:j38Gt5NV] >>299 XMLでやった方が早いんじゃねーの?
301 名前:286 mailto:sage [2007/09/14(金) 15:42:25 ID:RvW1gVaf] setInterval()で無事それらしく出来ました。ご指導感謝します。 ありがとうございました!
302 名前:Now_loading...774KB mailto:sage [2007/09/14(金) 20:39:48 ID:LYhDOI8p] 回転させるには_rotationを使えばいいんですよね? でも、回転するにあたって中心位置指定をするASはあるのでしょうか? rootを回転させたいので・・・