mieki256's diary



2013/09/01() [n年前の日記]

#1 [nitijyou] 自宅サーバ止めてました

雷が鳴ったので、17:10-20:10の間、自宅サーバ止めてました。申し訳ないです。

東京電力の雷情報ページが一時見れなかったのだけど、何かあったのかな…。関東方面でめちゃくちゃ雷が落ちたとか? …確認してみたら、栃木・茨城が凄いことになってたようで。アクセスが集中したということなんだろうか。

この記事へのツッコミ

Re: 自宅サーバ止めてました by 名無しさん    2013/09/13 15:38
雷も結構危険なのかもしれませんね。

あと話変わりますがhttp://blawat2015.no-ip.com/~mieki256/diary/201204181.html#201204181でもコメントしたものです(名無しという名で)
長文なのでコメント返答しにくかったらすみません。
Re: 自宅サーバ止めてました by mieki256    2013/09/15 11:04
> 長文なのでコメント返答しにくかったらすみません。

「おまうま」(?)のスタッフ制作意図考察コメント、ですよね?
「なるほど、そういう感じで作ってたのか」「映画1本作るって大変だなあ」
と興味深く読んだので、ご安心(?)を。
(濃い書き込み内容なので、迂闊なコメントつけられないな、
と思ってました… (^^; )
Re: 自宅サーバ止めてました by 名無しさん    2013/09/22 05:42
コメントして結構です。それだけ不満を述べたので。

あと言い忘れがあったので追記しました。
http://blawat2015.no-ip.com/~mieki256/diary/201204181.html

#2 [haxe] まだHaxeを触ってたり

キーボードイベントの取得をしてみたり。

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 に書いてあるっぽい。
mobile, desktop, native, web
ios, android, blackberry, webos, windows, mac, linux, html5
flash, cpp, neko, js

OpenFL :: Project File Format より

このあたりの文字列が指定出来るのかもしれない。自信ないけど。

ただ、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 が鳴らせない。
こんな状況らしいので、application.xml に記述しただけでは対応できず。

Haxe のソース内で、ブラウザ種別で読み込むファイル名を変える、ということができれば対応できるのかもしれないけど。ブラウザ種別の取得なんてできるのだろうか?

html5出力時は、サウンドを一切鳴らさないか、Google Chrome と Firefox にしか対応してないよとどこかに明記するか、そのくらいしか手が思いつかないなあ…。

いや待て。そもそも、ブラウザ上で動かしたいなら、Flash で出力すればいいのか。対応フォーマットすら足並みを揃えることができない html5 で無理矢理どうにか音を鳴らそうと四苦八苦するのも馬鹿馬鹿しいよな…。

以上、1 日分です。

過去ログ表示

Prev - 2013/09 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project