0

javascript+html5のキャンバス用の基本的なエンジンを完成させました。非常に初歩的です。ブラウザでは動作しますが、iOSでは動作しません。

Safari Mobileなどにまだ実装されていない機能を使用したことがありますか?:(

http://bluecodestudio.com/kipos/gametest.html

4

1 に答える 1

3

KeyboardJS.init()では、イベントコールバックでbind()メソッドを使用しています。

document.addEventListener("keydown", this.keyIsDown.bind(this));
document.addEventListener("keyup", this.keyIsUp.bind(this));

Safari(モバイルSafariを含む)はbind()メソッドをサポートしていません。ポリフィルを提供する必要があります。

/**
*    Bind.js
*    Copyright 2010, WebReflection
*    License: http://www.opensource.org/licenses/mit-license.php
*/
if (Function.prototype.bind === null || Function.prototype.bind === undefined) {
    Function.prototype.bind = (function (slice) {
        // (C) WebReflection - Mit Style License
        function bind(context) {
            var self = this; // "trapped" function reference
            // only if there is more than an argument
            // we are interested into more complex operations
            // this will speed up common bind creation
            // avoiding useless slices over arguments
            if (1 < arguments.length) {
                // extra arguments to send by default
                var $arguments = slice.call(arguments, 1);
                return function () {
                    return self.apply(
                        context,
                    // thanks @kangax for this suggestion
                        arguments.length ?
                    // concat arguments with those received
                            $arguments.concat(slice.call(arguments)) :
                    // send just arguments, no concat, no slice
                            $arguments
                    );
                };
            }
            // optimized callback
            return function () {
                // speed up when function is called without arguments
                return arguments.length ? self.apply(context, arguments) : self.call(context);
            };
        }

        // the named function
        return bind;

    } (Array.prototype.slice));
}
于 2012-05-23T18:28:38.363 に答える