2013/09/01(日) [n年前の日記]
#1 [nitijyou] 自宅サーバ止めてました
雷が鳴ったので、17:10-20:10の間、自宅サーバ止めてました。申し訳ないです。
東京電力の雷情報ページが一時見れなかったのだけど、何かあったのかな…。関東方面でめちゃくちゃ雷が落ちたとか? …確認してみたら、栃木・茨城が凄いことになってたようで。アクセスが集中したということなんだろうか。
東京電力の雷情報ページが一時見れなかったのだけど、何かあったのかな…。関東方面でめちゃくちゃ雷が落ちたとか? …確認してみたら、栃木・茨城が凄いことになってたようで。アクセスが集中したということなんだろうか。
この記事へのツッコミ
[ ツッコミを読む(3) | ツッコむ ]
#2 [haxe] まだHaxeを触ってたり
キーボードイベントの取得をしてみたり。
Main.hx
と思ったけど、サウンドはどうなんだろう。音が鳴らないのではゲームらしさが半減だろうけど。しかし、ブラウザによって鳴らせるサウンド形式が違うから、html5 で出力した際にマズイことになりそうな。
Main.hx
package ; import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.Lib; import flash.text.TextField; import flash.text.TextFieldAutoSize; /** * OpenFLテスト。キーボードイベントを取得してみる。 * @author mieki256 */ class Main extends Sprite { var inited:Bool; var spr:Sprite; var tf:TextField; var scrw:Float; var scrh:Float; var keybuf:Array<Bool>; static inline var KEY_UP:Int = 38; static inline var KEY_DOWN:Int = 40; static inline var KEY_LEFT:Int = 37; static inline var KEY_RIGHT:Int = 39; static inline var KEY_W:Int = 87; static inline var KEY_A:Int = 65; static inline var KEY_S:Int = 83; static inline var KEY_D:Int = 68; static inline var KEY_Z:Int = 90; static inline var KEY_X:Int = 88; static inline var KEY_C:Int = 67; static inline var KEY_B:Int = 66; static inline var KEY_N:Int = 78; static inline var KEY_M:Int = 77; static inline var KEY_SPC:Int = 32; /* ENTRY POINT */ function resize(e) { if (!inited) init(); // else (resize or orientation change) } function init() { if (inited) return; inited = true; scrw = Lib.current.stage.stageWidth; scrh = Lib.current.stage.stageHeight; spr = new Sprite(); spr.graphics.beginFill(0x8080FF); spr.graphics.drawRect( -32, -32, 64, 64); spr.graphics.endFill(); spr.x = scrw / 2; spr.y = scrh / 2; Lib.current.stage.addChild(spr); tf = new TextField(); tf.textColor = 0x333333; tf.selectable = false; tf.text = "WASD or Cursor , Z,X or B,N"; tf.autoSize = TextFieldAutoSize.CENTER; tf.x = (scrw - tf.width) / 2; Lib.current.stage.addChild(tf); keybuf = new Array(); // キーボードイベントを登録 Lib.current.stage.addEventListener(KeyboardEvent.KEY_DOWN, function (e:KeyboardEvent):Void { keybuf[e.keyCode] = true; }); Lib.current.stage.addEventListener(KeyboardEvent.KEY_UP, function (e:KeyboardEvent):Void { keybuf[e.keyCode] = false; }); Lib.current.stage.addEventListener(Event.DEACTIVATE, function(e:Event):Void { keybuf = new Array(); }); // 毎フレームの処理を登録 Lib.current.stage.addEventListener(Event.ENTER_FRAME, onEnterFrame); } /** * キーが押されたままかどうかを調べる * @param keycode * @return */ function keyIsDown(keycode:Int):Bool { return if (keybuf[keycode] == true) true else false; } /** * 毎フレーム呼ばれる処理 * @param e */ function onEnterFrame(e:Event):Void { var spd:Float = 5; // カーソルキー、もしくは wasdキーで座標を変更 if ( keyIsDown(KEY_UP) || keyIsDown(KEY_W)) { spr.y -= spd; } else if (keyIsDown(KEY_DOWN) || keyIsDown(KEY_S)) { spr.y += spd; } if (keyIsDown(KEY_LEFT) || keyIsDown(KEY_A)) { spr.x -= spd; } else if (keyIsDown(KEY_RIGHT) || keyIsDown(KEY_D)) { spr.x += spd; } // z,x、もしくは、b,nキーで拡大縮小率を変更 if (keyIsDown(KEY_Z) || keyIsDown(KEY_B)) { spr.scaleX = 2.0; } else { spr.scaleX = 1.0; } if (keyIsDown(KEY_X) || keyIsDown(KEY_N)) { spr.scaleY = 3.0; } else { spr.scaleY = 1.0; } spr.rotation += 3; // 回転 } /* SETUP */ public function new() { super(); addEventListener(Event.ADDED_TO_STAGE, added); } function added(e) { removeEventListener(Event.ADDED_TO_STAGE, added); stage.addEventListener(Event.RESIZE, resize); #if ios haxe.Timer.delay(init, 100); // iOS 6 #else init(); #end } public static function main() { // static entry point Lib.current.stage.align = flash.display.StageAlign.TOP_LEFT; Lib.current.stage.scaleMode = flash.display.StageScaleMode.NO_SCALE; Lib.current.addChild(new Main()); } }マウス座標も取得できたし、キーボードイベントも取得できたし、画像も表示できるみたいだから、ゲームっぽいものなら作れそう、かな…。
と思ったけど、サウンドはどうなんだろう。音が鳴らないのではゲームらしさが半減だろうけど。しかし、ブラウザによって鳴らせるサウンド形式が違うから、html5 で出力した際にマズイことになりそうな。
◎ サウンドは鳴らせない予感。 :
サウンド関係について、色々検索して眺めてみたけど。application.xml 内の assets 云々の指定で、flash かそうでないかを判別して、mp3 と ogg のどちらを持つか切り替える方法はあるらしい。if="falsh" とか unless="flash" と最後につける、みたいな。
どんな指定ができるのかについては、 _OpenFL :: Project File Format に書いてあるっぽい。
ただ、html5出力時用に if="html5" とした場合でも、ブラウザによって対応してる音楽ファイル形式が異なるわけで。例えば…。
Haxe のソース内で、ブラウザ種別で読み込むファイル名を変える、ということができれば対応できるのかもしれないけど。ブラウザ種別の取得なんてできるのだろうか?
html5出力時は、サウンドを一切鳴らさないか、Google Chrome と Firefox にしか対応してないよとどこかに明記するか、そのくらいしか手が思いつかないなあ…。
いや待て。そもそも、ブラウザ上で動かしたいなら、Flash で出力すればいいのか。対応フォーマットすら足並みを揃えることができない html5 で無理矢理どうにか音を鳴らそうと四苦八苦するのも馬鹿馬鹿しいよな…。
どんな指定ができるのかについては、 _OpenFL :: Project File Format に書いてあるっぽい。
mobile, desktop, native, webこのあたりの文字列が指定出来るのかもしれない。自信ないけど。
ios, android, blackberry, webos, windows, mac, linux, html5
flash, cpp, neko, js
ただ、html5出力時用に if="html5" とした場合でも、ブラウザによって対応してる音楽ファイル形式が異なるわけで。例えば…。
- Google Chrome ... ogg, mp3, wav, aac が鳴らせる。
- Firefox ... ogg, wav が鳴らせる。mp3, aac は鳴らせない。
- Opera ... ogg, wav が鳴らせる。mp3, aac は鳴らせない。
- IE9〜10 ... mp3, aac が鳴らせる。ogg, wav は鳴らせない。
- Safari ... mp3, wav, aac が鳴らせる。ogg が鳴らせない。
Haxe のソース内で、ブラウザ種別で読み込むファイル名を変える、ということができれば対応できるのかもしれないけど。ブラウザ種別の取得なんてできるのだろうか?
html5出力時は、サウンドを一切鳴らさないか、Google Chrome と Firefox にしか対応してないよとどこかに明記するか、そのくらいしか手が思いつかないなあ…。
いや待て。そもそも、ブラウザ上で動かしたいなら、Flash で出力すればいいのか。対応フォーマットすら足並みを揃えることができない html5 で無理矢理どうにか音を鳴らそうと四苦八苦するのも馬鹿馬鹿しいよな…。
[ ツッコむ ]
以上、1 日分です。
あと話変わりますがhttp://blawat2015.no-ip.com/~mieki256/diary/201204181.html#201204181でもコメントしたものです(名無しという名で)
長文なのでコメント返答しにくかったらすみません。
「おまうま」(?)のスタッフ制作意図考察コメント、ですよね?
「なるほど、そういう感じで作ってたのか」「映画1本作るって大変だなあ」
と興味深く読んだので、ご安心(?)を。
(濃い書き込み内容なので、迂闊なコメントつけられないな、
と思ってました… (^^; )
あと言い忘れがあったので追記しました。
http://blawat2015.no-ip.com/~mieki256/diary/201204181.html