Home > ActionScript Archive

ActionScript Archive

[ActionScript3]Adobe AIRのドラッグアンドドロップのバグ?

別件でFlex Builder 3を使ってAdobe AIRアプリを作っていたのですが、あれ所々WindowsとMacで動作が違うのですよね。そのひとつでようやく動作がだいたい掴めたことがあるのでメモしておきます。

ドラッグでオブジェクトを動かすプログラムで、Winでまともに動いたものをMacで動かすと微妙に位置がずれます(逆の言い方もできますが)。どうやらドラッグドロップ時に各イベントハンドラに返されるマウス座標の値が、WinとMacで違うようです。どっちかがおかしいのかと思ったのですがどっちもマニュアルの記述と少しずつ違うような……?

…続きを読む

【ActionScript】ゲームアップローダとFileReferenceクラス

かなり前に予告したゲームアップローダの制作を少しずつ進めています。

gameuploader

これまでのブログのプラグインを使用したものに比べて、ファイルをアップロードや設定がかなり楽になるはずです。また、アップロードしたゲームは自習室のトップで公開されるだけでなく、iframeタグを使って他のサイトやブログに貼れるようにする(Google MapやYotubeのようにする)予定です。

さてこのアップローダは、フロントエンドをAdobe Flex 3で、バックエンドをPHPで作っている――たとえば「アップロード」ボタンを押すと、ActionScirptでuploadfile.phpを呼び出して処理させる仕組み――のですが、ファイルのダウンロードの部分だけがなぜかAdobeのドキュメント通りに動かなかったため、ここにメモしておきます。

…続きを読む

[ActionScript]Flashの不思議な軽さ

「魔法のきのきの」のActionScript版への移植とソースコードの公開が完了しました。3つの言語のソースコードを見比べてみると、なかなか面白いのではないかと思います(クラスの概念を持たないC言語版をベースにしているので、Java版とAS版は1クラスにほとんどの処理が詰め込まれていて少々読みにくいですが……)。

JavaからActionScriptへ移植する工程はメモを取ってあるので、こちらもいずれ整理して公開する予定です。

ところでActionScript版でも実行中の負荷を簡単に調べてみましたが、記憶の通りかなり軽いことがわかりました。前回の記事と比べてみるとC言語版・Java版との差に驚かれると思います。

kinoas02 
ロード直後はたまに70%を超える。

kinoas01
それ以降はほぼ10%未満。

…続きを読む

[ActionScript]floatToIntBitsメソッドがない

LobbyFormの作成でもうひとつ困ったのが、JavaのfloatToIntBitsメソッドがないことでした。これはFloatクラスのメソッドで、float型の浮動小数点数(32ビット)をビット単位で等しいint型(32ビット)の値に変換します(int型へのキャストとは違います)。自習室用のゲームで実数をやりとりする際にはfloat→int→64進数文字列で送信しなければいけないので、その変換に使っていたのです。

ActionScriptで変換処理を書くと大変だなぁと悩んでいたのですが、たまたまflash.utilsパッケージでいいものを見つけました。ByteArray(バイトアレイ)というバイトデータの配列を扱うクラスです。

public static function encodeFloat( inv:Number ):String {
	var buf:ByteArray = new ByteArray();
	buf.writeFloat( inv );
	buf.position = 0;
	var i:int = buf.readInt();
	return encodeInt( i );
}

writeFloatメソッドでfloat値を書き込んでから、読み出し位置を先頭に戻し、同じデータをint値として取り出します。これでfloatToIntBitsメソッドと同じ結果が得られます。

このクラスは色々と使い道がありそうですね。

[ActionScript]JOptionPaneクラスがない

LobbyFormクラスはJava版から移植したわけですが、Web向けのクライアントプログラムならJavaもActionScriptも大差ないので、対応するクラスを作ってから、メソッド単位でEclipseからFlashDevelopにコピペして、
変数宣言を「int index = 0;」→「var index:int = 0;」に、
メソッド定義を「int myfunc( int i, String s)」→「function myfunc(i:var, s:string):int」という感じに、
機械的に修正していきます。一回ビルドしてコンパイラにエラーを指摘させると楽です。

APIも、SocketChannelクラスをSocketクラスに置き換えるとか、StringBuilderやCharBufferは全部Stringに置き換えるとか、たいていは置き換えで済みます。

しかし、「対応するものがまったくない」場合はちょっと困ったことになります。今回のケースではJOptionPaneクラスがないのと、floatToIntBitsメソッドがなく、そこでかなりもたつきました。JOptionPaneクラスはメッセージボックスとかインプットボックスなどの小物ダイアログボックスを表示するクラスです。仕方がないのでそれっぽいものを自作したのですが……。

capsta28

capsta24 

…続きを読む

[ActionScript]LobbyFormの完成

ActionScript対戦ゲーム公開キット用のLobbyFormが完成しました(マニュアルがまだ書きおわっていないのでキット全体は未完成なのですが……)。これを利用するとJava版と同じように対戦ゲームを作ることができます。マニュアルページからダウンロード可能です。

capsta20

…続きを読む

[ActionScript]リストボックスとボタン

ActionScript用LobbyFormクラスを作るために、ButtonクラスListBoxクラスを作りました。ActionScriptにもGUI用クラスがないわけではないのですが、flパッケージのクラスはAdobe.Flashがないと使えない、mxパッケージはFlexアプリじゃなければ使えない、と色々制限があるため、FlashDevelop+Flex3SDKしかない無料環境用に自作しました。

…続きを読む

[サイト構築中]Flashへのリソース埋め込み~実践

書籍サンプルchap3を対象にリソース埋め込みを実践してみました。作業そのものは一時間もかかりません。

…続きを読む

Home > ActionScript Archive

Amazonリンク

Return to page top