【AS3】FlashDevelop【フリー】 (601レス)
【AS3】FlashDevelop【フリー】 http://mevius.5ch.net/test/read.cgi/swf/1216151218/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
130: Now_loading...774KB [sage] 2009/08/04(火) 12:16:49 ID:d57xYwwQ >> 129 ありがとう! 参考にします。 ところで、オリゼの画像とか勝手に使って大丈夫なの? http://mevius.5ch.net/test/read.cgi/swf/1216151218/130
131: ひきプロ ◆HIRO2ZQ2Xo [sage] 2009/08/04(火) 13:41:21 ID:NE4Ij/QG >>130 もやしもんの画像は著作権的にまずそうですよねw ゆくゆく問題になりそうなものは入れ替えようと思います。 http://mevius.5ch.net/test/read.cgi/swf/1216151218/131
132: Now_loading...774KB [sage] 2009/08/06(木) 00:52:02 ID:BIlthKR7 条件付コンパイルかぁ・・・何かに使えそうだ でも、何に使えるのかな http://mevius.5ch.net/test/read.cgi/swf/1216151218/132
133: Now_loading...774KB [sage] 2009/08/06(木) 01:17:02 ID:FbtIO6V/ >>129 条件付コンパイルとか出来たのか・・・ 知らなかった。 >>132 他言語でよくあるのは、例えば例にも出てるデバッグモード時の動作とか。 主にログ出力や、トレース http://mevius.5ch.net/test/read.cgi/swf/1216151218/133
134: Now_loading...774KB [] 2009/08/07(金) 17:08:37 ID:vF9qZ0RK スレチかもしれないけど、FD + Flex SDK だけで作ってるのでとりあえずここに。 AS3 Project with Preloader を使ったプロジェクトの Preloader 内で 複数の外部画像をそれぞれ Loader に読ませて Main で利用したいと思ってるんだけど、プログレスバーの分母に 外部画像のサイズ合計を使うにはどうしたらいいのかな。 Loader.load(req) する前に調べられるとベスト。 せめて Event.OPEN 時に画像サイズがわかればいいんだけど、 OPEN ハンドラ内で Event.target の LoaderInfo.bytesTotal 見ても 0 になってるし・・・ http://mevius.5ch.net/test/read.cgi/swf/1216151218/134
135: ひきプロ ◆HIRO2ZQ2Xo [sage] 2009/08/07(金) 20:34:16 ID:kF/vEctb >>132-133 ぼくもこないだマニュアル見てたら偶然見つけました。 でもあんまり有効な使い道って思い浮かばないですよねw >>134 ProgressEvent の1回目で取れるかもしれません。 たぶん HTTP の Content-Length パラメータを見てるのかなと。 でも Web サーバの種類とか、場合によっては Content-Length が入らない場合もありそうですね。 もう一歩先に確認する方法として、PHP とかで GET パラメータに 渡されたファイル名を確認してサイズを調べるというような 簡単なスクリプトを書いたりするのも良いかもしれません。 これだと Loader のほかに URLLoader も使わないといけないので若干面倒ですね。 http://mevius.5ch.net/test/read.cgi/swf/1216151218/135
136: Now_loading...774KB [sage] 2009/08/07(金) 20:45:05 ID:u2+EPbai >>134 出来そうで出来ない事の一つのような。 LoaderInfo.bytesTotal は読み込んだサイズだったと思うから、0なのは当たり前だった気がする。 HTTPヘッダでも読めれば行けるような気もするけど、Content-Lengthはイコールでファイルサイズじゃなかった気もする Socketで接続して実験してみるとか http://mevius.5ch.net/test/read.cgi/swf/1216151218/136
137: Now_loading...774KB [sage] 2009/08/08(土) 03:36:22 ID:Xf8YSrUw やっぱり多少トリッキーなことをしないと難しそうだね。 ちゃんと作るなら >>135 の通りサーバサイドのプログラムに頼るのが一番信頼できそう。 俺のはちゃんとしてないので、ひとまずロードが完了した画像数を出しておいた。 数が多すぎなければ画像の数だけプログレスバーを出してもいいかも。 ProgressEvent.PROGRESS の時点なら利用できることは確認したけど、 ここから合計プログレスバーを作ると読み込み中に分母が変わっていきそうで微妙かなと。 合計サイズが揃うまで読み込み待機とか器用なことができたらいいけど ASのイベントモデルをちゃんと理解してないので週末使って調べてみる。 でも close() しか見あたらないので難しそうな予感(他に使い道ないし) http://mevius.5ch.net/test/read.cgi/swf/1216151218/137
138: Now_loading...774KB [sage] 2009/08/08(土) 16:37:19 ID:e1CUMyK1 あいつ生きてたのか http://mevius.5ch.net/test/read.cgi/swf/1216151218/138
139: Now_loading...774KB [] 2009/08/09(日) 09:01:10 ID:VHnq37kK 質問させてください 以下のように、2つ以上のファイルを使ってオブジェクトを生成する場合、 実行画面に何も表示されません。階層などの問題なのでしょうか? Main.as package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { public function Main():void { var tokei:DigitalClock = new DigitalClock(); } } } 続く http://mevius.5ch.net/test/read.cgi/swf/1216151218/139
140: Now_loading...774KB [] 2009/08/09(日) 09:15:04 ID:VHnq37kK 続き DigitalClock.as package { import flash.display.*; import flash.events.*; import flash.text.*; import flash.utils.*; public class DigitalClock extends Sprite { private var clockTimer:Timer = new Timer(1000); private var clock:TextField = new TextField(); public function DigitalClock():void { clockTimer.addEventListener(TimerEvent.TIMER, clockShowTimer); clock.defaultTextFormat = new TextFormat("arial", 20, 0x000000); clock.autoSize = TextFieldAutoSize.LEFT; clock.selectable = false; clock.embedFonts = false; addChild(clock); //ここが問題だと思う clockTimer.start(); } private function clockShowTimer(event:TimerEvent):void { 省略 } } } http://mevius.5ch.net/test/read.cgi/swf/1216151218/140
141: 139 [] 2009/08/09(日) 09:26:53 ID:VHnq37kK ちなみに、「DigitalClock.as」の中身は、 「Main.as」の中に組み込めば普通に実行できたので 一部省略しました。 階層の問題でしょうか? http://mevius.5ch.net/test/read.cgi/swf/1216151218/141
142: ひきプロ ◆HIRO2ZQ2Xo [sage] 2009/08/09(日) 09:58:19 ID:KDLSuSt/ >>137 ロードした画像数を表示するのが一番作りやすそうな形ですね。 ProgressEvent.PROGRESS でファイルサイズ取れましたかー。 途中でロード処理を一時停止することはきっとできないと思うので、 複数のファイルをロードする時は、ProgressEvent では 容量を割り出してから というわけにはいかなさそうですね。 なにかわかったら教えてくださいっ! 僕も興味あります。 >>139-141 たぶん、>>139 で書かれたコードを、 var tokei:DigitalClock = new DigitalClock(); addChild(tokei); と 1 行足すと画面に表示されると思います。 Main の画面に addChild しないと画面に出てこないんですよねw 僕も最初詰まりましたw http://mevius.5ch.net/test/read.cgi/swf/1216151218/142
143: 139 [] 2009/08/09(日) 11:15:01 ID:VHnq37kK >>142 できました! ありがとうございます!! 具体的には、 「addChild(tokei);」 をちょっと変更して、 「addChild(tokei.getClock());」 としたらできました。もちろんDigitalClock.as でゲッターを用意しました。 Mainに書き込まないといけないんですね、勉強になりました。 http://mevius.5ch.net/test/read.cgi/swf/1216151218/143
144: 139 [] 2009/08/10(月) 08:17:07 ID:B1VXl5B1 http://mevius.5ch.net/test/read.cgi/swf/1216151218/144
145: ひきプロ ◆HIRO2ZQ2Xo [sage] 2009/08/11(火) 20:43:06 ID:mz96ONGl >>143 DigitalClock は Sprite を継承しているので、 addChild(tokei.getClock()); とせずに、 addChild(tokei); というコードで時計の画像が扱える方がよりスマートな設計になると思います。 tokei.getClock() は、たぶん DigitalClock の内部にもう一つ画面表示要素を作って それを Main に渡す構造になっていると思うのですが、 その場合、 DigitalClock は Sprite を継承しない設計にすることができますね。 tokei を addChild 、 removeChild するだけで表示したり消したりできる方が コードが読みやすくなるし、間違いも起こりにくくなると僕は思います。 とここまで書いて、好みの問題な気もしてきましたw http://mevius.5ch.net/test/read.cgi/swf/1216151218/145
146: Now_loading...774KB [sage] 2009/08/14(金) 01:11:18 ID:w4LLHFJe もう解決したが、謎仕様にハメられた・・・ 例) [SWF (width=800, height=600, backgroundColor=0xffffff, frameRate=20)] public class Main extends Sprite public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { // ここで stage.stageWidth と stage.stageHeight // を取った時・・・ ローカルで直接swfを叩くと 設定値がちゃんと取れる // しかし WebServer上に上げて http://hogehoge/huga.swf のようにして実行するとなんと 0 が返る // 挙動が変わるとはこれいかに } } http://mevius.5ch.net/test/read.cgi/swf/1216151218/146
147: Now_loading...774KB [sage] 2009/08/14(金) 01:14:43 ID:w4LLHFJe >>146 の解決策 例) [SWF (width=800, height=600, backgroundColor=0xffffff, frameRate=20)] public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); addEventListener(Event.ENTER_FRAME, ent); } private function ent(e:Event = null):void { removeEventListener(Event.ENTER_FRAME, ent); // EnterFrameを一段カマせば、ブラウザ越しでもローカル実行でも取れる // ※サイズはその時のステージのサイズ } } http://mevius.5ch.net/test/read.cgi/swf/1216151218/147
148: Now_loading...774KB [sage] 2009/08/14(金) 01:17:51 ID:w4LLHFJe ちなみに、謎仕様と言うか動きから察するに、win32で言う所の、 WM_PAINT が実行されたタイミングでサイズ決定してるんだろうなぁという感想 stage.stageWidth と stage.width の違いも知らないと多分間違うし、結構罠が多い… 無駄に時間食ってしまった http://mevius.5ch.net/test/read.cgi/swf/1216151218/148
149: ひきプロ ◆HIRO2ZQ2Xo [sage] 2009/08/14(金) 14:25:46 ID:H3Ft1e6v Web ページに配置すると init イベントで stageWidth 取れないんですか。 なぜか 0 になってしまう時があるなーと思ってたんですよねw 詳しい内容載せていただいてありがとうございました。 勉強になります。 http://mevius.5ch.net/test/read.cgi/swf/1216151218/149
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 452 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.008s