チャプター04 までやっとこ読んだ。
会社始まったらなかなか読めない!
今回は、Bitmap うんぬん。
サンプルに1行足したら、なんだか面白い効果をゲットした!
画面をクリックするとモコモコしたスプレーに。
Chap04_spray
なんだっけなーこれ。
昔あったんだよなぁ。ドライヤーあてるとこんな感じになるヤツ。
以下、ソース。
Chap04_spray
サンプルにDropShadowをつけただけ(笑
面白いなー。Bitmap。
チャプター04 までやっとこ読んだ。
会社始まったらなかなか読めない!
今回は、Bitmap うんぬん。
サンプルに1行足したら、なんだか面白い効果をゲットした!
画面をクリックするとモコモコしたスプレーに。
Chap04_spray
なんだっけなーこれ。
昔あったんだよなぁ。ドライヤーあてるとこんな感じになるヤツ。
以下、ソース。
Chap04_spray
サンプルにDropShadowをつけただけ(笑
面白いなー。Bitmap。
ActionScript 3.0 アニメーションを読んでるメモ。
チャプター3。
簡単な三角関数について。
でも、予想以上に忘れてらー。
サイン, コサイン, タンジェント,
アークサイン, アークコサイン, アークタンジェント,
ピタゴラスの定理。
cos は、基本的に x の位置を示し、sin は y の位置を示す。
sin = y / r
cos = x / r
要は、比率。
ピタゴラスの定理は、a^2 + b^2 = c^2
2点間の距離を出すのに便利。
Chap03_Test
以下、ソース。
Box2D と video, camera ついでに as3corelib を使って png で保存までやってみたメモ。
・操作方法
WEBカメラ必須。
Shoot ボタンを押すとキャプチャ画像が出てきてころころする。
キャプチャの上限は20枚。
キャプチャ画像にマウスをあわせるとぼよんとする。
ぼよんとしたままクリックするとプレビューする。
プレビューの Save ボタンを押すと PNG 画像として保存する。
プレビューの Close ボタンを押すとプレビューがとじる。
とじずにキャプチャぼよんをクリックするとプレビューが切り替わる。
下のリンクは、ラージサイズ版。こないだのよりちょっとでかくなってる。
ソースは、量がむだに多くなってしまったので、ZIPダウンロードで。
欲しい方がいたら、ご自由にどうぞ。あんまりコメント書いてませんが……
あとライブラリは、ZIP に含めておりません。
(使用ライブラリ : box2d-2.0.1, as3corelib-90)
しかし、久々に夢中でコーディングしたかもしれない(笑
なんだかつくっててけっこう楽しかったしなー。
つぎはなにをしようかなー。
ActionScript 3.0 版の Box2D 2.0.1 と video camera を使ってみたメモ。
正直、試したいことの半分ぐらいしかできてない。
けど、まあ中間メモ的な感じ。
WEBカメラが必須。
Shoot ボタンを押すと写真になってポツポツ降る。
上限は20枚。
下のは、もうちょっと大きなラージサイズ版。
いやーしかし、動きがあるだけでも、なかなか楽しいかも。
もうちょっとだけ、がんばってみよう。
ActionScript 3.0 版の Box2D 2.0.1 を弄くったメモ。
単純な機能を使ったもの。
マウス左ドラッグで、オブジェクトをぐにぐに操作。
スペースキーで、ボールが増える。
Rキーで、リセット。
少しハマったのが、ワールドの領域。
1 = 1m という定義で、0.1m – 10m(缶からバスまで)で調節されている模様。
Box2D Units
なので、オブジェクトを大きく設定しすぎたりするとパフォーマンスが落ちるそうな。
以下、失敗版とソース。
FallBall-failure
FallBall-failure.as
ボールを 20px = 20m やら床を 640px = 640m で作成してた。
重力 10 だと遅すぎるのはなぜと思いつつ 300 にしてみたり。
とてもまともとはいえない有様。
そこで、描画サイズはそのまま。判定サイズを 1/30 として作成しなおしたのが、こちら。
FallBall
以下、ソース。
FallBall.as
とてもスムーズに動いた。
判定サイズを 1/30 にしたことで、衝突結果の位置も 1/30 されてしまうので、表示位置は x 30 して対応。
これでなにかゲームを作ってみようかなぁ。
Papervision3D 2.0 beta をちょいちょい弄ったメモ。
とても単純なもの。
画面をクリックするとキューブが跳ねたりくるくるする。
BoundCube3D
意外とすんなりキューブが出てびっくり。
もっと苦労するかと思ったら、こんなに簡単だったとわ・・・。
次やるときは、エフェクト関係を弄ってみよう。
以下、ソース。一筆書き。
BoundCube3D.as
ActionScript3.0 の Socket を使用したアプリ作ってたらこんな問題にぶち当たったメモ。
Error #2044: ハンドルされていない SecurityErrorEvent : text=Error #2048: セキュリティサンドボックス侵害
Flex Builderのデバッガやローカルからの実行なら起こらないっぽい問題。
crossdomain.xml といったポリシーファイルを作成しなければいけないとのこと。
そして Socket 接続する前に Security. loadPolicyFile( “http://ドメイン/crossdomain.xml” ) を呼び出して、そのポリシーファイルを読み込まなければならない。
・・・との事だったのだが、せっせと置いて呼び出してもうんともすんとも言やしない。
これはどうしたものか・・・と悩みつつ調べていたら、どうやら最近セキュリティー系のアップデートがかかって Socket を使う場合、↑では駄目になったらしい。
どうすれば良いのかというと。
1.Flashアプリが、843ポートに接続してくるのを待ち受ける。
2.<policy-file-request/> 文字列を投げてくるので、受け取る。
3.<policy-file-request/> 文字列を受け取ったら、ポリシーファイルを投げ返す。
以上。
そんな常駐アプリをつくればよい。
しかし、自分で作らなくても、なんとすでにAdobeの人が作成してくれている。
こちらに。
↑からダウンロードしてきたファイルの中で使ったものは、
Standalone/flashpolicyd.pl
flashpolicy.xml
の2個。
とりあえず flashpolicyd.pl を cp ../ して
flashpolicy.xml を下記のように書き換えた。
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <site-control permitted-cross-domain-policies="all"/> <allow-access-from domain="*" to-ports="*" /> </cross-domain-policy>
全部おkっぽい仕様(テスト用)
そして実行。
sudo ./flashpolicyd.pl --file=flashpolicy.xml
とりあえずこれで試してみたら、無事に socket 通信できた。
しかしめんどくさ(笑
まぁこれから弄くりたおしつつ理解を深めていこうかな。
Flashアプリは、843ポートにまず要求を送り、そこで返答がなければ、接続先ポートに要求を送る。さらにそこで返答がなければ、接続に失敗する。
要求を843ポートで受けたくない場合は、接続先ポートで要求を受けてポリシーファイルを返してやると、うまく行く。
ActionScript3.0 の Socket を使ってみたとき、接続に失敗したときの処理が分からなかったんだけど、やっと分かった。
try catch でやるのかなーと思ってたけど、どうやら違ってイベントをとらえるらしい。
socket.addEventListener( SecurityErrorEvent.SECURITY_ERROR, onSecurtyError );
socket.addEventListener( IOErrorEvent.IO_ERROR, onIOError );
↑こんな感じで。
◇サンプルソース
client_air.as
いままでサーバがないと不快なエラーメッセージがポップアップされていたけど、テキストで表示されるようになってスッキリした。
いやえがったえがったー。
adobe AIR が正式になったと聞いてさっそく弄くってみた。
とりあえず通信したかったので、Socketを使ったエコークライアント。
接続先は、先日のlibeventを使ったサーバへ。
◇サンプルソース
client_air.as
いやーブラウザを起動せずともソケット通信できるflashアプリが作れるとは・・・。
それがAIRなんだから当たり前だけど、ちょっと感動した。
参考:ん・ぱか工房
はてさて、ActionScript 3.0。
今回は、DataGrid とかいう HTML でいうテーブルみたいなやつを弄ってみた。
DataGrid に画像を表示させてみたり、Grid クリックでポップアップさせたり。
しかし、AS3 若干慣れてきたけど、まだいまいちつかめないんだよなー。
慣れるしかないかなーこれ。
以下、サンプル&メモ
grid.html
右クリックでソース表示。
grid.php
grid.mxml
mxml で書けるものを ActionScript 化している今日この頃。
こっちのが何かと柔軟性がある気がするんだよねー。
気のせいか。