【AS3】FlashDevelop【フリー】

2008/07/16(水) 04:46:58ID:ahpJufac
FlashのAS3などの総合開発環境。
質問スレなどで結構出ているがスレがないので立てた。
基本英語だが、日本語化できる補助みたいなのもあるらしい。

【必要なソフト】
Flex 3 SDK
ttp://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3

JRE1.6
ttp://cowscorpion.com/Library/JREforWindows.html

FlashDevelop
ttp://www.flashdevelop.org/community/viewforum.php?f=11
2009/07/19(日) 16:15:28ID:cvJyrS+I
>>88
>どれもできませんでした。

マジで?俺まさにの font属性を "MS ゴシック" に書き換えただけでフォント変わったぜ
もちろん、FlashDevelop を一旦落として起動しなおしたが。
Courier にあったセリフの部分消えたので、間違いない
2009/07/19(日) 20:56:58ID:cvJyrS+I
てs
2009/07/21(火) 22:04:42ID:2nEKRkbF
最近のバージョンならToolsメニューのSyntax ColoringからGUIで設定できるよん
2009/07/21(火) 23:49:00ID:uLbGpFwk
>>93
まさかこんなところに・・・www
2009/07/22(水) 08:55:51ID:2fuCTfQl
>>84
これオレも最初ハマったわ
空のSpriteのサイズ変更を定めようとそりゃもう必死でした・・・

みなさん400x300のSpriteに100x100のBitmapをaddChildしたい時ってどうしてます?
2009/07/22(水) 14:09:48ID:3YvZZPep
>>95
サイズがどうこうより、400x300のどこに配置したいか、じゃないのん?
例えばこういう書き方じゃダメなのかな
これならSpriteのサイズ=Bitmapのサイズになるから、400と300は別の変数で持って利用する感じ

var sprite:Sprite = new Sprite();
var bitmapData:BitmapData = new BitmapData(100, 100, false, 0x000000);
var bitmap:Bitmap = new Bitmap(bitmapData);

//左上に配置
stage.addChild(sprite);
sprite.addChild(bitmap);

var containerW:int = 400;
var containerH:int = 300;

//Bitmapを400x300の中央に移動
//bitmap.x = containerW / 2 - bitmap.width / 2;
//bitmap.y = containerH / 2 - bitmap.height / 2;

//Spriteを400x300の中央に移動
//sprite.x = containerW / 2 - sprite.width / 2;
//sprite.y = containerH / 2 - sprite.height / 2;
2009/07/22(水) 21:56:29ID:uQMeUn4h
>>95 DisplayObjectの中にDisplayObjectをaddChildした時、
子の方の座標は親からの相対=ローカル座標になるんじゃなかったっけ?

ただし、「この領域内」 っていう、他の言語で言うクリッピング領域がデフォルトで存在しない=自分のサイズを持っていないので、
例えば 400x300 (のつもりの) Sprite内で、800, 600 の位置に子を配置して、しかも表示されてしまい、
さらに、800,600 の位置にあるその子のサイズを 100x100 とした時、

気持ちの上では 「親のサイズは900,700であって欲しい」のに、値を取得すると100x100と返ってきてしまう!
ここが、なんか最初戸惑ってしまう所なんだよな。 自分のサイズが中身に依存している/依存した値しか無い。

そんな訳で俺の場合、明示的にどうしてもサイズが必要ならこうしてる

 var oya:Sprite = new Sprite();

 var ko:Sprite = new Sprite();
 ko.width = 1; ko.height = 1;
 ko.graphics.beginFill(0xffffff, 0.0); // サイズ1ピクセルのアルハァ0の矩形を0,0に
 ko.graphics.drawRect(0, 0, 1, 1);
 ko.graphics.endFill();
 oya.addChild(ko);

 var bm:Bitmap = new Bitmap(new BitmapData(100, 100));
 bm.x = 800;
 bm.y = 600;
 oya.addChild(bm);

これで、親のサイズ披露とちゃんと 900,700 が返る。 ※注意・ただしわざわざこんな事するのは必要な時のみ
98Now_loading...774KB
垢版 |
2009/07/23(木) 05:22:14ID:inrj64Xk
>93
ああ、こんなところにあったのか!
フォント設定できました。
ありがとうございます!
99Now_loading...774KB
垢版 |
2009/07/23(木) 17:42:34ID:c443yLQ8
Flash CS3 では「書き出し」という機能があり、
swf を avi もしくは mov 形式の動画ファイルに
変換することができます。

これと同じことを GUI を使わずに
コマンドに引数を与えてできないものでしょうか?

入力ファイルは swf です。
特に ActionScript を使って、
外部のいくつかの画像ファイルを使って、
スライドショーをする swf です。
2009/07/23(木) 18:16:41ID:4taf+0T/
GUI使わないツールはわからないんだが、要は FlashのIDEとか立ち上げずに変換したい、
って事なら http://www.pizzinini.net/projects/swf2avi/ こんなのもある
ただし ASで動的に生成している要素まで書き出せるのかどうかは使ったこと無いので不明

さもなきゃ CamStudioとかでキャプチャ
2009/07/24(金) 12:02:37ID:+KHqF1AP
>>96-97
なるほど勉強になります!
特に>>96のやり方は目からウロコでした

え?オレのやり方?
お恥ずかしながら400x300を一度addChildしてましたよorz
語る資格なしってやつですね
2009/07/24(金) 21:19:05ID:/8vm4bBp
>>96 ってなんか意味あるのか
無意味に リソース使ってるだけのような気が
103Now_loading...774KB
垢版 |
2009/07/24(金) 22:49:49ID:QG4PdDfU
httpserviceでインターネットのtxtファイルを取得する方法ってありますか?
2009/07/24(金) 23:00:24ID:/8vm4bBp
ネット上のtxt(等)のファイル取得するだけなら、

 var us:URLStream = new URLStream();
 us.addEventListener(Event.COMPLETE, function(e:Event):void {
  // 読み込んだテキスト
  var t:String = us.readMultiByte(us.bytesAvailable, "shift_jis");
 });
 us.load(new URLRequest("http://hogehoge/huga.txt"));

こんな感じで取れね?
ちなみにこないだ変態2chブラウザを as3 で作った時使った
105Now_loading...774KB
垢版 |
2009/07/24(金) 23:29:21ID:QG4PdDfU
ありがとうございます。httpservice使わなくてもできるんですね。
なんとかhttpserviceでも読み込めたみたんですが
このsrv.addEventListenerの部分をmxml側で書くことってできますか?


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp()">
<mx:HTTPService url="http://hogehoge/huga.txt" id="srv" resultFormat="text"/>
<mx:Script>
<![CDATA[
import mx.controls.Alert;import mx.rpc.events.*;import mx.rpc.http.mxml.HTTPService;

private function initApp():void {srv.addEventListener(mx.rpc.events.ResultEvent.RESULT, resultHandler);}

private function resultHandler(e:ResultEvent):void {t.text = e.message.body as String;}

private function onSendButtonClick(e:MouseEvent):void {srv.send();}

]]>
</mx:Script>
<mx:Button id="sendButton" label="(σ´Д`)σ" click="onSendButtonClick(event)"/>
<mx:TextArea id="t" width="100%" height="50%" />
</mx:Application>
2009/07/25(土) 00:20:10ID:wqoRA9Fh
>>105 出来ますか?も何も FlashDevelop使ってるならコード補完で出てくるじゃん
俺普段AS3は書くけど、mxml はそのレス見て3分前に生まれて初めて書いたが、

 <mx:HTTPService url="http://hogehoge/huga.txt" id="srv" resultFormat="text" result="resultHandler(event)" />

ハンドル用の属性あったぞ。こういう事じゃないの?
2009/07/25(土) 00:29:32ID:e6/1Mytt
>>102
お題がSpriteにBitmapをaddChildしてる前提だからね
108Now_loading...774KB
垢版 |
2009/07/25(土) 00:33:42ID:L37jAvI1
>>106
動きました!
私もflashどころかプログラミング初心者でコード補完ってのがなんなのかすらわかりません^^;
とりあえずサンプル見てなにがどうなってるのか把握することからはじめます。
ありがとうございました
2009/07/25(土) 00:35:18ID:wqoRA9Fh
>>107 400x300のSpriteに、100x100のBitmapを addChild するって話から、

→ 400x300のSpriteなんていう概念は無い = だから400x300のBitmapを放り込んで作ってしまう
 → そこに、本題の Bitmapを再度 addChild
  → 2つもBitmapとか生成してる = リソースの無駄じゃね?っていう気持ちだった
  要はサイズの実現をしたいだけの為に、Bitblt というか malloc するのはどうなんだろう的な気持ちだった
  (※実際にFlashがそうしてるかどうかは知らない)
2009/07/25(土) 00:39:29ID:wqoRA9Fh
>>108 そういう事かww がんばれ!

ちなみにコード補完って書いたのは・・・ 例えばFlashDevelopとかでタグ、またはスクリプトを書いてる時、
スペースを開けたり [Ctrl] + [Space] を押下すると候補がてろんって出てくるだろ? あれ。
いちいち書かなくても、その候補を選んで決定すれば書けちゃうみたいな。

その中で、イナヅママークの result がいたんだ。 これがイベントハンドラだろうと踏んだ。 そういう事なのだ
2009/07/25(土) 01:02:24ID:JpyZPDQ+
1から覚えるのに良いサイトってあるのかな?
AS系のサイト探せばいいんだろうけどどうしてもFlashのサイトが多い
2009/07/25(土) 01:12:42ID:wqoRA9Fh
>>111 1からってのがどのレベルを指してるのかによるからなんとも言えないけど・・・
言われてみれば確かに両極端かもしれないな。 絵的なFlashのサイト、か、動きのアルゴリズムを解説するようなサイトが多い気がする
前者は多分コーディングよりもいわゆるFlash的な、ツールを使う視点のサイトで、
後者は多分、他の言語の経験者がFlash使って何かやってる、みたいなサイト

AS系で、例えば Java や C/C++ みたいな言語としての解説から始まるようなサイトは中々無いな
C#にもそういうサイトは少ないんだけど、多分少ない理由はASと同じかもしれない(=他言語を知ってる人向けが多いって事)
2009/07/25(土) 01:39:02ID:e6/1Mytt
>>109
いや、質問者の前提を勝手に変えずに回答したからああなったんだよん
あのコードのコメントアウトしてるところを見比べればそのうち、
Spriteでラップすることにあまり意味がないのはわかるでしょ?

>→ 400x300のSpriteなんていう概念は無い = だから400x300のBitmapを放り込んで作ってしまう

なんでここでSpriteがBitmapに切り替わるのかわからないけど、
どう書くのが正解だと思ったの? コードで書いてもらった方がわかりやすいかも
2009/07/25(土) 02:10:28ID:wqoRA9Fh
>>113 あ、悪い。別に批判とかなんていうか、反対してる訳じゃないんだ。
どっちかって言うとFlash/ASの仕様的な違和感の話というか・・・ 要は 400x300 のSprite っていう概念じゃないって話。
他が正解とか、そういう話じゃない。

>なんでここでSpriteがBitmapに切り替わるのかわからないけど

切り替わるっていうか、それは単に >>96 のソースが Bitmapリソースを2度追加していたから。
で、その理由が、>>113 の引用の部分なんだよな、っていう事。

ごめん、そもそも話の前提に、他の言語のイメージがあったんだ。 例えばC/C++にしろC#にしろ、
座標とサイズでまず領域を用意して、その中に何かを描画する、ていう順番の感覚のまま、
FlashのSpriteを見た初見の時の衝撃の話なんだ。 単に領域を示すサイズ値があればいいのに、わざわざリソース使うのかと
2009/07/25(土) 02:12:30ID:wqoRA9Fh
ちょっと言葉足りなかった
×単に領域を示すサイズ値があればいいのに、わざわざリソース使うのかと
○単に領域を示すサイズ値があればいいだけなのに、似たような表現しようとしたら、
 わざわざリソース使わなきゃならんのかと。例としてSprite#mask
2009/07/25(土) 02:14:30ID:wqoRA9Fh
・・・と、思って良く見たら >>96 のソースは2度追加とかしてないな・・・www
俺どうかしてるわ。 maskの印象があったのかも試練。スマン
11796
垢版 |
2009/07/25(土) 02:55:00ID:e6/1Mytt
なるほどねん。ID:wqoRA9Fhの言ってることがなんとなくわかったよ
確かに違和感があるかもしれないね。でもこう考えるとちょっと楽かも?
Sprite=Illustrator
Bitmap=Photoshop
元々Flashはベクターベースのアプリだから、Spriteもベクター的で、
そのためにオブジェクトの最初のサイズ(キャンバス)を指定するという概念が
無いんじゃないかな? 伸縮自由なんだから指定しても意味ないよね
一方、途中から追加されたBitmapは言うまでもなく昔からある概念で使える

一昔前までFlashでは、ベクター(Sprite)で作るのが主流だったけど、
最近はラスター(Bitmap)が主流になってきてるね
特にゲーム系なんかはBitmapを使わないと処理落ちしたり、上手に描画できなかったり。

Flashはそういう別の概念を持ったオブジェクトを、混ぜて使えるツール
というイメージでどうかな
2009/07/25(土) 03:04:55ID:e6/1Mytt
ちなみに>>96のコードを>>109のツッコミを考慮してBitmapだけで書くとこんな感じかな
速度が重視されるゲームなんかでは、こういったBitmapDataに直接描画する方が多いね
Bitmapになると急にコードが難しくなるので、こういうのは必要になってから調べればいいと思うよん

var b1:BitmapData = new BitmapData(400, 300, true, 0xFFFFFF); //400x300の透明キャンバス
var b2:BitmapData = new BitmapData(100, 100, false, 0x000000);
b1.copyPixels(b2, b2.rect, new Point(b1.width / 2 - b2.width / 2, b1.height / 2 - b2.height / 2));

var bitmap:Bitmap = new Bitmap(b1);
stage.addChild(bitmap);

あんまりFlashDevelopの話題じゃないね、これw
2009/07/25(土) 03:18:46ID:bEXMIQAj
いやーーー参考になります
2009/07/26(日) 11:21:40ID:8UgrPD4O
皆さん、日本語環境どうしてます?

やはり、設定ファイルのxmlファイルのメニュー項目を日本語に置き換える方法ですか?

FD3 bata4の時にソースレベルからローカライズされている方がいて、これを使うと環境設定から英語、日本語と変更できたのですが、最新バージョンでソースレベルからローカライズされた方、居ませんかね
2009/07/26(日) 12:17:34ID:Jzt/Dycx
>>120 Flash Develop3.0.1 RTM での話だったら、
このスレの上の方で出てる気がするが、読んでない?
122120
垢版 |
2009/07/26(日) 22:50:37ID:8UgrPD4O
>>121

テンプレには、日本語化を匂わすようなこと書いてありましたが、
一読した限りでは見つけられませんでした。

英語メニューと日本語メニューを交互に使い分けたかったので、
設定ファイル書き換えは敬遠したいのです
2009/07/27(月) 00:19:54ID:UfNVhzWS
>>122 テンプレじゃなくて >>86-94 の辺りは読んだのか
2009/07/27(月) 02:42:55ID:OpPt/EHP
なんか話が食い違っているように見える

>>120が言ってるのはメニュー表示やら設定画面での日本語化をしたいってことだよね?
自分が知っている範囲では、3.0.1RTMまでは日本語化ファイルを公開してくれている方がいるね
「FlashDevelop 日本語化」でググれば見つかると思うよん

ただこの方法は設定ファイルを上書きする方式だと思うから、
「交互に切り替える」なんてことは無理だと思う
あと日本語化されるのはメニュー部分だけだろうね

>>121が言ってるのは、アプリのUIやコーディングのフォントを変更する方法だね
125120
垢版 |
2009/07/27(月) 12:27:08ID:LjRzadcV
>>124 さん、ありがとうございます。

まさに、その通りです。
設定ファイルを書き換える方法しかないようですので、諦めて古いバージョンで我慢します。

126Now_loading...774KB
垢版 |
2009/07/31(金) 22:41:20ID:0BZ92BWl
コンパイルできなくて詰まっています。

昨夜インストールしました。
参考にしたのはここ↓
ttp://clockmaker.jp/blog/2009/07/tutorial-install-flashdevelop-flex-sdk/

javaに関しては java -versionで
java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
Java HotSpot(TM) Client VM (build 11.3-b02, mixed mode, sharing)
と出てるので問題なさそう。

.NET Frameworkは3.5 SP1が入ってます。

上のページのサンプルを動かそうとしたところ、
コンパイルができませんでした。
「would you like to open the AS3 context settings to configure the compiler」
というダイアログが出てきてしまいます。

ググってみると、
ttp://tinyboat.net/ の [FlashDevelop] コンパイルにひっかかる という記事があり、
解決法らしきものがありますが、試しても代わりません。

何か他に対処法はありませんか?

2009/08/01(土) 02:12:17ID:md9O1YcS
>>126
最初に参考にしたところの、Step.4、Step.5あたりを良く読んでもう一度設定してみるといいかも
・「Flex SDK Location」のパスをちゃんと指定できているか
・テンプレートで上から2番目の「AS3 Project」をちゃんと選択しているか
 (間違えて「Flash IDE Project」を選んでないか)

FlashDevelopは、Flash CS3/CS4を持ってる場合と、持ってない場合で使い方がちょっと違う
前者のURLは無い場合、後者はある場合で解説されているよん
2009/08/01(土) 06:33:25ID:d7/CM7yX
>>127
ありがとうございます。
>FlashDevelopは、Flash CS3/CS4を持ってる場合と、持ってない場合で使い方がちょっと違う
これはわかりませんでした。参考になります。

んで、解決しました。
Flex SDK LocationのC:\flex_sdk_3をC;\flex_sdk_3と誤入力してました。
なんてことないイージーミスでしたorz

また何か質問するかもしれません。そのときはよろしくお願いします。
2009/08/04(火) 11:21:33ID:NE4Ij/QG?2BP(123)
>>41 のものですが、サンプル集の URL 変更になりました。
よろしかったらまた使ってください。
http://hikipuro.is-a-geek.org/flash/game/sample.php
2009/08/04(火) 12:16:49ID:d57xYwwQ
>> 129
ありがとう!
参考にします。

ところで、オリゼの画像とか勝手に使って大丈夫なの?
2009/08/04(火) 13:41:21ID:NE4Ij/QG?2BP(123)
>>130
もやしもんの画像は著作権的にまずそうですよねw
ゆくゆく問題になりそうなものは入れ替えようと思います。
2009/08/06(木) 00:52:02ID:BIlthKR7
条件付コンパイルかぁ・・・何かに使えそうだ
でも、何に使えるのかな
2009/08/06(木) 01:17:02ID:FbtIO6V/
>>129 条件付コンパイルとか出来たのか・・・ 知らなかった。

>>132 他言語でよくあるのは、例えば例にも出てるデバッグモード時の動作とか。
主にログ出力や、トレース
134Now_loading...774KB
垢版 |
2009/08/07(金) 17:08:37ID:vF9qZ0RK
スレチかもしれないけど、FD + Flex SDK だけで作ってるのでとりあえずここに。

AS3 Project with Preloader を使ったプロジェクトの Preloader 内で
複数の外部画像をそれぞれ Loader に読ませて
Main で利用したいと思ってるんだけど、プログレスバーの分母に
外部画像のサイズ合計を使うにはどうしたらいいのかな。
Loader.load(req) する前に調べられるとベスト。

せめて Event.OPEN 時に画像サイズがわかればいいんだけど、
OPEN ハンドラ内で Event.target の LoaderInfo.bytesTotal 見ても 0 になってるし・・・
2009/08/07(金) 20:34:16ID:kF/vEctb?2BP(123)
>>132-133
ぼくもこないだマニュアル見てたら偶然見つけました。
でもあんまり有効な使い道って思い浮かばないですよねw
>>134
ProgressEvent の1回目で取れるかもしれません。
たぶん HTTP の Content-Length パラメータを見てるのかなと。
でも Web サーバの種類とか、場合によっては Content-Length が入らない場合もありそうですね。
もう一歩先に確認する方法として、PHP とかで GET パラメータに
渡されたファイル名を確認してサイズを調べるというような
簡単なスクリプトを書いたりするのも良いかもしれません。
これだと Loader のほかに URLLoader も使わないといけないので若干面倒ですね。
2009/08/07(金) 20:45:05ID:u2+EPbai
>>134 出来そうで出来ない事の一つのような。
LoaderInfo.bytesTotal は読み込んだサイズだったと思うから、0なのは当たり前だった気がする。
HTTPヘッダでも読めれば行けるような気もするけど、Content-Lengthはイコールでファイルサイズじゃなかった気もする
Socketで接続して実験してみるとか
2009/08/08(土) 03:36:22ID:Xf8YSrUw
やっぱり多少トリッキーなことをしないと難しそうだね。
ちゃんと作るなら >>135 の通りサーバサイドのプログラムに頼るのが一番信頼できそう。
俺のはちゃんとしてないので、ひとまずロードが完了した画像数を出しておいた。
数が多すぎなければ画像の数だけプログレスバーを出してもいいかも。

ProgressEvent.PROGRESS の時点なら利用できることは確認したけど、
ここから合計プログレスバーを作ると読み込み中に分母が変わっていきそうで微妙かなと。
合計サイズが揃うまで読み込み待機とか器用なことができたらいいけど
ASのイベントモデルをちゃんと理解してないので週末使って調べてみる。
でも close() しか見あたらないので難しそうな予感(他に使い道ないし)
2009/08/08(土) 16:37:19ID:e1CUMyK1
あいつ生きてたのか
139Now_loading...774KB
垢版 |
2009/08/09(日) 09:01:10ID: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();
  }
 }
}

続く
140Now_loading...774KB
垢版 |
2009/08/09(日) 09:15:04ID: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 {
   省略
  }
 }
}
141139
垢版 |
2009/08/09(日) 09:26:53ID:VHnq37kK
ちなみに、「DigitalClock.as」の中身は、
「Main.as」の中に組み込めば普通に実行できたので
一部省略しました。
階層の問題でしょうか?
2009/08/09(日) 09:58:19ID:KDLSuSt/?2BP(123)
>>137
ロードした画像数を表示するのが一番作りやすそうな形ですね。
ProgressEvent.PROGRESS でファイルサイズ取れましたかー。
途中でロード処理を一時停止することはきっとできないと思うので、
複数のファイルをロードする時は、ProgressEvent では
容量を割り出してから というわけにはいかなさそうですね。
なにかわかったら教えてくださいっ!
僕も興味あります。
>>139-141
たぶん、>>139 で書かれたコードを、

var tokei:DigitalClock = new DigitalClock();
addChild(tokei);

と 1 行足すと画面に表示されると思います。
Main の画面に addChild しないと画面に出てこないんですよねw
僕も最初詰まりましたw
143139
垢版 |
2009/08/09(日) 11:15:01ID:VHnq37kK
>>142
できました!
ありがとうございます!!

具体的には、
「addChild(tokei);」
をちょっと変更して、
「addChild(tokei.getClock());」
としたらできました。もちろんDigitalClock.as でゲッターを用意しました。


Mainに書き込まないといけないんですね、勉強になりました。




144139
垢版 |
2009/08/10(月) 08:17:07ID:B1VXl5B1
2009/08/11(火) 20:43:06ID:mz96ONGl?2BP(123)
>>143
DigitalClock は Sprite を継承しているので、
addChild(tokei.getClock());
とせずに、
addChild(tokei);
というコードで時計の画像が扱える方がよりスマートな設計になると思います。
tokei.getClock() は、たぶん DigitalClock の内部にもう一つ画面表示要素を作って
それを Main に渡す構造になっていると思うのですが、
その場合、 DigitalClock は Sprite を継承しない設計にすることができますね。
tokei を addChild 、 removeChild するだけで表示したり消したりできる方が
コードが読みやすくなるし、間違いも起こりにくくなると僕は思います。
とここまで書いて、好みの問題な気もしてきましたw
2009/08/14(金) 01:11:18ID: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 が返る
  // 挙動が変わるとはこれいかに
 }
}
2009/08/14(金) 01:14:43ID: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を一段カマせば、ブラウザ越しでもローカル実行でも取れる
  // ※サイズはその時のステージのサイズ
 }
}
2009/08/14(金) 01:17:51ID:w4LLHFJe
ちなみに、謎仕様と言うか動きから察するに、win32で言う所の、
WM_PAINT が実行されたタイミングでサイズ決定してるんだろうなぁという感想

stage.stageWidth と stage.width の違いも知らないと多分間違うし、結構罠が多い…
無駄に時間食ってしまった
2009/08/14(金) 14:25:46ID:H3Ft1e6v?2BP(123)
Web ページに配置すると init イベントで stageWidth 取れないんですか。
なぜか 0 になってしまう時があるなーと思ってたんですよねw
詳しい内容載せていただいてありがとうございました。
勉強になります。
2009/08/14(金) 21:08:05ID:w4LLHFJe
あとこういう謎仕様と言うか、Flashの中の動きを想像して予想しないと
一見何でも無いような事すら書けないってのはちょっと苦痛な気もする・・・ 理由わかる?

例1)
var w:int = 200;
var h:int = 50;
var sp:Sprite = addChild(new Sprite()) as Sprite;
sp.graphics.beginGradientFill(GradientType.LINEAR, [0xffffff, 0x000000], [1.0, 1.0], [200, 255]);
sp.graphics.drawRoundRect(0, 0, w, h, 8, 8);
sp.graphics.endFill();

例2)
〜例1と同じ前略〜
var sp:Sprite = addChild(new Sprite()) as Sprite;
sp.width = w;
sp.height = h;
〜例1と同じ後略〜

空の Sprite の width/height を設定するかしないかで描画の内容が変わるって一体・・・
2009/08/14(金) 21:15:46ID:w4LLHFJe
あ、ちなみに誤解の無いように言っておくと、不満色々書いてても
俺根本的にFlash好きだからなww ブツブツ文句言いながら追いかけて楽しんでる
2009/08/14(金) 23:21:08ID:H3Ft1e6v?2BP(123)
>>150
この問題はなんで起こるんでしょうねw
ぼくも疑問に思っていました。
width・height への値の代入は、
「描き始める前に領域を確保する」
という効果が出ないようですね。
これは直感と反する動作なので謎の仕様に見えてしまいます。

試しに、図形を描き終わった後から width・height を再設定してみると、
scaleX, scaleY に値を代入したかのように拡大縮小されますね。
「後からサイズを変える」 という効果はあるようです。

trace(sp.scaleX);

を表示してみると、再設定されていることが確認できました。
ということは、最初に width・height に値を代入すると、
scaleX、scaleY が 0 に設定されてしまうことになり、
その後の描画内容が画面に出ないという動作になってしまいます。

以上のことから想像すると、width・height のセッターの動作が、
function set width(value:Number):void {
  this.scaleX = this.width / value;
}
というようになっているのではないかなと。
width の初期値は 0 なので、何か値を掛けたとしても 0 になってしまいます。
2009/08/14(金) 23:24:27ID:H3Ft1e6v?2BP(123)
最後の行の書き方がおかしかったですね。
0 / value;
というような式だと、結果は常に 0 になるので、
最初に width・height を設定すると、その段階で
scaleX、scaleY が 0 になってしまうと考えられます。
2009/08/15(土) 14:53:11ID:srGxDtlq
>>152-153 ああなるほど。確かにそうかも。・・ってか、こういう風に利用者側が動きを想像しないと
動作の正解が見えないってのはどうなんだろうな・・ww 困るわ、モヤモヤがいつまでも晴れなくて。 色々と
2009/08/15(土) 15:04:29ID:srGxDtlq
あと、スレが過疎なので話のネタと一つの心配事を書いとく。

ネタ: ただし誰でも知ってるような話)
良くあるAS他の説明で、「これはオブジェクト指向(以下OOと略)言語です」 って説明があるが、実はOOにも複数の流派/思想がある。
例えばダックタイピングなOO、つまり 「それがアヒルのように歩きアヒルのように鳴くなら、それはアヒルである」 って考え方。

これは例えば、C/C++ 言語で関数ポインタを使ったコールバックを想像するとわかりやすくて、つまり、
「使おうと思った時にそれが想像通りのインタフェース/インプリメンテーションになっていれば、それと見なす」 と言う物。

 AS3の例)
  class A {
   var onLoad:Function = null;
   function load(): void {
    if(onLoad != null) onLoad("終了");
   }
  }
  // var a:A = new A(); a.onLoad=function(s:String):void { trace(s); }; // "終了とトレースされる

これは関数テンプレートに従ってそれと見なしているので実行可能となるが、例えば a.onLoad = function(i:int):void ... のように記述すると
コンパイルは通るが実行時に 「型が違う」 的なエラーになる。
こういう動きを、型推論とか、ダックタイプとか、C/C++のテンプレートに倣って テンプレート指向OOとか言う

対して JavaやC#、C++のクラス機構のような 「アヒルのように歩きアヒルのように鳴いてもアヒルでないなら、それはアヒルでは無い」 という
型厳密なOOを、クラス指向OOとか言う。(続く)
2009/08/15(土) 15:11:52ID:srGxDtlq
ネタ続き)
で、この当たり前の話がここからどうなるかと言うと、要はAS3って型推論と型厳密が両方使える言語なんだよなって事。

…って、ここで心配事書くはずだったが、ちょっと確認してからにしたいのでやっぱり止めた
2009/08/15(土) 18:27:24ID:srGxDtlq
AS3メモ:
・URLLoader と Loader は継承関係に無い赤の他人。Loader はさり気なく DisplayObject の派生
・Video インスタンスにattachした NetStream を取り出す方法が無い。
 ※setがあるのにgetが無い的なイメージ。 それは触ってはいけないからじゃ?とも思ったが、コントロールはNetStream側で行う謎設計
 ※この辺のストリームやI/Oのイメージは、初めから整理されているJava他の言語のイメージは捨てて、全部疑ってかかった方がいい

・if(a < b && c , 1) { ほげほげ } のような構文でコンパイルエラーにならない @FlashDevelop 3.0.1 RTM + Flex3
 しかし実行すると Decompressされたソースが山のように吐かれて死亡する。しかもエラーメッセージは

 [Fault] exception, information=VerifyError: Error #1068: Boolean と int は共有できません。

 になる。原因がわかればわかる話だが、いきなり実行時にこのエラーメッセージ見ても原因が想像出来なかった。まさか typo とは
2009/08/16(日) 03:14:49ID:AKWy+LpT?2BP(123)
ちょ〜濃いネタですねw
かなり調べないと付いていけないです。
OO のお話ですが、ActionScript は過去のやり方を引き継いでる部分とか
JavaScript のベースになっている仕様を取り入れるとかで、
おっしゃる通り、色んな考え方が錯綜してるように見えますね。

var obj:Object = new Object();
obj.prototype.func = function ():void { return; };

というような、プロトタイプを使った機能の拡張もできるらしいですね。
実際に使ったことはないですが。
2009/08/16(日) 03:25:19ID:AKWy+LpT?2BP(123)
今挙げていただいた話題とは直接の関係はないですが、

・Flash Playerの作り方
http://www.slideshare.net/yukoba/flash-player

ここに書かれている内容によると、
Flash Player の動きって、明文化されてない部分がかなりあるようで、
「バグとか誤動作も含めてそういう仕様」 みたいな状態になってるようですね。
ドキュメントが後から作られてるような感じかもしれませんw
謎の動きをする箇所は、Flash の文化圏はそういうものだと割り切って、
厳密に仕様が存在する環境とは分けて考えた方が
精神衛生上よろしいのではないかと個人的には思いますw
2009/08/16(日) 12:40:30ID:BH5EXFvM
あぁ、書こうと思ってた心配事がとりあえず的中。 原因はつまり、>>158 氏の話の通りだ。 多分過去の仕様を引き継いで
強引に形を変えつつ、増築を繰り返してる&API仕様の整理が出来て無いのか、ライブラリがバラバラ。

具体的にどういう事があったかメモしとくとこんな感じ。 丁度 >>159 の話ともリンクするけど、
俺がやろうとしてた事は、かいつまんで言えば画像、音、動画(FLV)を、特に分け隔てもせずに動的にロードしつつ、再生するものだった。
実際には他にも色々行っているけど、その中の一部として、これをやりたかった。 そしてハマった。

結果、結局さんざん調べてどうやら出来ないとの結論に達して、別の観点で自分で整理して、継承したクラスいくつか作って
再管理する形にしたけど、この 「どうやら出来ない」 って結論に辿り着いた理由ってのが、まさにこのバラバラな作りのせい。

何かの役に立つかもしれないので、念のためまたメモしとく(続く)
2009/08/16(日) 13:08:53ID:BH5EXFvM
(続き 1/2) 
差し当たり、自サバのCGI(Perl/PHP)にパラメタをPOSTして、そのレスポンスとして flv ファイルを取得し、それを表示したかった。
画像と音はさくっと完成。 しかし flv でハマる。 結果、GETで投げれば普通に出来たんだが、POSTじゃないと困る部分があったので、そうしたかった。
しかし出来なかった。 その理由を具体的に以下に記す。 原因は上でも書いた通りクラスが一部独自仕様になっており、絶妙にバラバラに作られてたせい。

まず前提として、 flash.net.URLStream と flash.net.NetStream がまったく別物。 一見似てるけど全然別物。 どういう事かと言うと、
継承関係がまず Object ← EventDispatcher ← ほげほげStream となっていて、Stream 抽象クラスのような物は無いし、インタフェースインプリメントの状態もまったく別。
と言うか、 NetStream は IDataInput インタフェースを実装していない。 かと言って、上で書いたダックタイプな手法でごまかそうにも、メソッドのシグネチャが違うので無理。

つまり、この2つは相互に入れ替えが出来ない。 やろうとした事から考えると、NetStream がもしもインタフェースインプリしてたら、自前クラスで機能補完できたんだけど、
それも出来ず、かといって AS3 は多重継承も出来ないので、結果、出来ない。
2009/08/16(日) 13:11:50ID:BH5EXFvM
(続き 2/2)
それならばと、URLStream でバイナリデータを自前でロードし、それを使おうと思ったが、今度は NetStreamにバイナリデータを受け取る口がない。
それならばと目の前の目的である flash.media.Video に渡そうと思ったが、それ自身バイナリデータを受け取るインタフェースが無い。 よって自前でロードして渡す案も出来ない。

それならば仕方が無いので、画像、動画、音声の共通抽象クラスを定義して自前で再実装、NetStream と URLStream に自前で共通のインタフェース定義して、
それをベースに書いてしまえと書いてみたが、ここで致命傷発覚。 つまり、NetStream には POSTデータが渡せない。 というか、HTTP-POSTを投げる方法が無い。
URLStream ならば、URLRequest を引数に取るのでどんなHTTP-METHODでも送信できるが、NetStream は NetConnection とだけ仲良しで、自由なHTTP送信は出来ない。
そして、flash.media.Video は、NetStream, NetConnection しか受け取らない。 そして、flv ファイルのデコードは、flash.media.Video 内のネイティブ実装コードが行っている。

という訳で、ここで詰んだ。

ちなみに現状は、とりあえずもっと上位レベルで自前で管理を揃えてます。 画像、音声、動画を同じように非同期でロードしつつ、どれも同じように 扱えるクラス書いて。
NetConnection/NetStream って、どうやら Flashサーバ向けの固有実装っぽい。 ハードコード祭りらしく、その理由はおそらく >>159
2009/08/16(日) 15:58:16ID:BH5EXFvM
ちなみに、flv ファイルを簡単に扱える VideoClip クラスを作ってあるのでソース貼っとく。
もし必要な人いたらどうぞ。 使用方法他はテキスト中で。 作りはシンプル

ttp://flpannex.so.land.to/memo/memo4.txt
164Now_loading...774KB
垢版 |
2009/08/18(火) 12:33:29ID:9ukPwcJf
FlashDevelop使いってInkscapeユーザも多いのかな?
絵描いてsvgで出力すると、そのままEmbedすればShapeとして使えるんだぜ
2009/08/18(火) 23:34:39ID:VZ4cFrHD
>>164
IllustratorのSVGじゃだめなの?
166Now_loading...774KB
垢版 |
2009/08/19(水) 02:26:28ID:lSXfPDKg
>>165 いや Illustratorでも独自拡張の無いSVGなら全然おkだけど、
そもそもオープンソースでって話じゃないかと思う。 FlashDevelop も Inkscape もオープンソース。

大体イラレは高い。 Flashで使うパーツをちょっと描きたいなら、Inkscape で問題無い。
てか凝ったの描いても問題無い。 本気でイラスト描く or 仕事で使うなら買った方がいいかもしれないが

2009/08/19(水) 22:17:07ID:CCAOsmOZ
>>164
俺はFLASHで書くなあ・・・
処理速度欲しいから出力はPNGにしちゃうけどね。

Inkscape使った事ないけど、イイ感じなのかい?
168Now_loading...774KB
垢版 |
2009/08/20(木) 12:34:56ID:t3Qav2lR
>>167
製品版のFlash持ってるならいらないかもしれないが、
このスレはFlashDevelopユーザのスレだ。

FlashDevelopはAS主体で何か作る時、製品版FlashよりVisualStudioライクで圧倒的に
効率がいいけど絵を描く機能は無いのだ。完全にプログラマ向け。

だが同じオープンソースってくくりでInkscapeと連動させると、結果的に製品版と変わらない内容が
無償で効率よく描けるって事。

Inkscapeそのものは正直ちょっともっさりしてるけど、良くできてるぜ
169167
垢版 |
2009/08/20(木) 22:00:20ID:d8t6qhE/
>>168
なるほど、オープンソースで何とかする場合の話か。空気読めなくてごめんよ。
俺も最初はEDGEで頑張ったりしてたんだけど
細かいアニメーション付ける必要があったから結局FLASH買ったんだよなぁ…
2009/08/21(金) 00:22:42ID:+eU7pAsm
SVGがそのままEmbedできるってのは、AS3標準?FlashDevelopの機能として?
ライブラリ使わないと読み込めないと思ってた
2009/08/21(金) 06:11:41ID:XE5HNHp8
>>170 あぁ、それどうなんだろ。メタタグの処理してる所で何かしてんのかな?
あ、あと、>>164 1個間違えた。ShapeじゃなくてSpriteだった

public class Main extends Sprite
{
  [Embed (source = '../lib/box.svg')]
  private var SvgBox:Class;

  private var box:Sprite;

  public function Main()
  {
    box = new SvgBox() as Sprite;
  }
}
172Now_loading...774KB
垢版 |
2009/08/21(金) 12:22:53ID:uilm8B9A
FlashDevelopで使えるウィジェットキットみたいな物ってなんかないだろうか。
mxmlでなく、AS3で使えるソースライブラリ

無ければ自分で作る
2009/08/24(月) 17:05:58ID:vwB2Xwdq
3Dスレが盛ってないからこっちで聞きたいのですが、
GoogleSketchUpで吐いたkmzファイルから取り出したdaeファイルを、
papervision3d2.0のcolladaクラスで読み込もうとするとエラーを吐かれます。

daeファイルの修正が必要だということを言っているサイトはいくつか見つけたのですが、
具体的にどこを修正すればいいのか分かりません。

なにか手がかりだけでも教えていただけませんでしょうか。
174Now_loading...774KB
垢版 |
2009/08/24(月) 20:03:11ID:BBkP+lkD
>>173 どういうエラーかわからないと、何とも言えない気がする
2009/08/25(火) 10:10:36ID:ALs1NBnV?2BP(123)
>>172
・BIT-101 MinimalComps v0.91
http://www.bit-101.com/minimalcomps/
こういうのがありました。
2009/08/25(火) 12:21:35ID:HhgWXHDT
>>173

PV3Dのバージョンはいくつ?
文法おかしくないという前提で言うと、GoogleCodeに上がってる安定板の最新にした方が良いよ。
一個前のやつはCollada関係のライブラリに不具合があるから
177173
垢版 |
2009/08/25(火) 12:40:04ID:W4YVVRDH
>>176
エスパー! 最新版にしたら解決しました!

こんな基本的なことを見落としていたなんてお恥ずかしい……
まことにトンでした。
2009/08/25(火) 22:02:11ID:kksrYPK4
>>175
こりゃシブいね。
使うときの権利表記どうすりゃいいか見ようとして元サイト眺めてたら
こんなのも作ってるのかこの人。デザインが好みだなぁ。
http://www.bit-101.com/MinimalDesigner/
2009/08/26(水) 18:42:50ID:XDrpXCay
FlashDevelopでSVNを使いたいんですけど、出来ますでしょうか?

本当は使い慣れているEclipseで開発したいんですが出来ないようなので・・・
180Now_loading...774KB
垢版 |
2009/08/26(水) 19:18:29ID:6z5BxeNv
FlashDevelopでって言うか、普通にSVNクライアントでソースやりとりすればいいと
IDEに機能包含されてる必要は無いし

ちなみにToirtoseSVNお勧め。プロジェクトフォルダにチェックアウトして楽ちん
2009/08/26(水) 19:57:16ID:XDrpXCay
レスどうも!

今まさにTortoiseSVNでやっているのですが
個人的にはIDE上で操作できた方が楽なんですよね
ぶっちゃげ、大差ないのはわかりますが・・・w
無いようなのでしばらくはコレでやってみます
2009/08/26(水) 21:45:06ID:a0Hvfq8D
TortoiseSVNならProjectパネルのファイル右クリックしてShell Menuから呼び出せるからな
1クリック余計にかかるが大した事はないな
2009/08/28(金) 11:00:28ID:M2jlnvsr?2BP(123)
・Flex Style Explorer
http://examples.adobe.com/flex3/consulting/styleexplorer/Flex3StyleExplorer.html
既にみなさんご存知だとは思いますが、
MXMLで画面作る時に便利ですよ。
2009/08/30(日) 00:13:45ID:zvSmTpYT?2BP(123)
ネタ振りとして1つ。
AIRアプリが便利そうだなぁと今思ってるんですよ。
Windows・Mac・Linuxで同一のバイナリで動きます。
AIRは実行環境でWebブラウザコンポーネント(WebKit系)を内蔵してるし、
OSのファイルマネージャから直接ドラッグできるし、
日本語のインライン入力がMac・LinuxでもWindowsと同じようにできます。
Webブラウザコンポーネントのみを使って、HTML+CSS+JavaScriptでも開発できるそうです。
2009/08/30(日) 02:37:07ID:LcfhxjBj
AIRはランタイムの再配布ライセンスが不要な範囲なら確かに便利だろう。
ランタイムの普及率とシームレスインストールの存在から考えて、Web配布が前提だと思う。

AIRアプリはランタイムのインストールとアプリ自体のインストールが必須で敷居が高いけど
ファイルの読み書きとか右クリック対応とかの明白な機能強化がある。
一方、.exeファイルをコピーするだけで起動できて手軽なプロジェクタの魅力も捨てがたい。

ガジェット以上の事をやりたくなると強制されるこの選択が意外と悩ましい。
(俺はAS側からウィンドウサイズを変更したいだけなのに・・・)
2009/08/30(日) 10:12:56ID:Mae5Wjx/
「AIRはランタイムの再配布ライセンスが不要な範囲」ってなに?
配るときにライセンス的に何かあるの?
2009/08/30(日) 12:16:48ID:zvSmTpYT?2BP(123)
>>185
CD等の媒体で配布する場合も、ユーザのPCがインターネットに接続可能だと仮定して
インストーラー作っても良いと思うんですよね。
インストーラーは、 HTML と .air のファイルで作れそうです。
AIRのランタイムはCDに含めずに、ネットから拾ってもらう方が良いかなと。
おっしゃる通り、ランタイムをCDに含めたい場合は、
ライセンスを意識する必要がありそうです。

Flashプレーヤーのプロジェクタ (.exe) も、プレゼンテーションのように
ユーザの操作性を拡張しなくて良い場合はお手軽にできて便利ですよね。
188Now_loading...774KB
垢版 |
2009/09/09(水) 13:54:32ID:f8wHh8Pi
質問です。コメントで使える@paramとかってなんて言うのですか?
FlashDevelop以外のエディタでも(VisualC++とか)こういうのあるみたいなのですが
名前がわからないので調べることもできません(汗。
それと格@要素の意味がわからないので、よろしければ解説お願いします。
/**
* ...
* @author(製作者の名前を書く)
* @copy
* @default
* @deprecated
* @eventType
* @example
* @exampleText
* @exception
* @haxe
* @inheritDoc
* @internal
* @link
* @mtasc
* @mxmlc
* @param(引数の説明を書く)
* @private
* @return(何を返すか説明を書く)
* @see
* @serial
* @serialData
* @serialField
* @since
* @throws
* @usage
* @version(日付等の最終更新日を書く??)
*/
2009/09/09(水) 15:23:10ID:p4jKgGmk
>>188

javadocだよ

簡単な書き方とか
ttp://www.k-kawaguchi.com/java/fnavi/javadoc.html
2009/09/09(水) 15:25:49ID:f8wHh8Pi
>>189
どうもありがとう!
2009/09/09(水) 23:02:23ID:b0K8lE04
AS3のVector<T>.splice、第二引数省略したら引数足りないってエラーになったけど
オンラインリファレンスでは省略可能ってなってる
なぜだろう
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況