0

現在、私は少し論理的な問題を経験しています。タイルエンジンのいくつかのmapdataと、クリックされたタイルのx位置とy位置を計算するjQuery拡張機能を格納するオブジェクトがあるとします。

    $(document).ready(function(){   

        var mapdata = {
            dimensions: {x: 10, y: 10},
            tileSize: 32
        };

        $.fn.getpos = function(type){
            var xpos = $(this)%mapdata.dimensions.y;
            var ypos = Math.floor($(this)/mapdata.dimensions.y);

            else if(type == 'x')
                return xpos;
            else if(type == 'y')
                return ypos;
            else
                return {x: xpos, y:ypos}
        }       

        $('.tile').click(function(){
            console.log($($(this).index('.tile')).getpos());
        });
    });

問題は私には明らかです。getpos()のスコープ内で使用できないmapdataオブジェクトにアクセスしようとしています。これを達成する方法はありますか?それ以外の場合は、作成するすべての拡張機能にmapdataを渡す必要があります。

前もって感謝します。よろしくお願いいたします。トーマス

4

2 に答える 2

2

getpos() 関数を定義すると、同時にスコープが継承されるため、現在定義されている mapdata が可視になるはずです。

getpost() 内で console.log($(this)) を試してください。おそらく、数学演算では期待しない価値があります。

于 2012-10-05T14:13:15.883 に答える
1

グローバル変数が設定されると、window オブジェクトに割り当てられます。試してみてくださいwindow.mapdata

于 2012-10-05T14:07:25.907 に答える