2015-12-10 43 views
0

我正在用移相器使用JavaScript創建一個網頁遊戲。我習慣了Java,並且很難掌握構建簡單的基於按鈕的遊戲的正確方法。這場比賽是瑞典每個景觀的簡單地圖。遊戲內容將根據我所按的景觀而改變。要更新的元素可以是按鈕標題,文本數據等。javascript:多個可點擊的精靈

我通過生成許多景觀類遇到的一個問題是m最後創建的景觀覆蓋其他景觀。控制檯應該寫下按下的風景的名稱,但按下每個風景都會生成我上次創建的風景對象的名稱。

回顧我的解決方案,並不是真正以我想要的方式獲得它,我想知道如果我以錯誤的方式查看我的遊戲結構。

有沒有更好的方法來做到這一點?

這裏是什麼樣的遊戲目前看起來像一個鏈接:http://postimg.org/image/l5jthna4x/

<script type="text/javascript"> 

var game = new Phaser.Game(480, 700, Phaser.AUTO, '', { preload: preload, create: create, update: update }); 

function create() { 
    game.stage.backgroundColor = '#7dc3ff'; 

    sweden(0, 0, 'sweden', 10000000); 

    var btnLand = new BtnLand(); 
    btnLand.changeText("Sweden"); 

} 

function update() { 

} 

function render() { 

} 


var BtnLand = function(){ 
    this.btn = game.add.sprite(game.world.centerX, game.world.height, 'btn-main'); 
    this.btn.scale.setTo(0.8, 1); 
    this.btn.anchor.set(0.5, 1) 
    this.btn.inputEnabled = true; 
} 

BtnLand.prototype.changeText = function (title) { 
    this.title = title; 
    var style = { font: "32px Arial", fill: "#000000", wordWrap: true, wordWrapWidth: this.width, align: "center" }; 
    this.text = game.add.text(this.btn.x, this.btn.y, this.title, style); 
    this.text.anchor.set(0.5, 1.5); 
} 


var Landscape = function(x, y, name) { 
    this.landname = name; 

    this.area = game.add.sprite(x, y, this.landname); 
    this.area.anchor.set(0.5); 

    this.area.inputEnabled = true; 
    this.area.events.onInputDown.add(listener, this); 

} 

var sweden = function(x, y, name) { 
    this.smaland = Landscape(230 + x, 483 + y, 'smaland', 720358); 
    this.skane = Landscape(200 + x, 600 + y, 'skane', 1289000); 
    this.blekinge = Landscape(277 + x, 565 + y, 'blekinge', 152315); 
    this.halland = Landscape(127 + x, 505 + y, 'halland', 152315); 

} 


function listener() { 
    console.log("pressed " + landname); 
    btnLand.changeText(landname); 
} 

</script> 

我感謝所有的意見,我可以得到!

預先感謝您。

回答

0

我認爲最主要的問題是調用Landscape作爲函數而不是構造函數。

如果您將Landscape中的每個呼叫更改爲new Landscape,您將創建4個獨立的環境,並且this的範圍將成爲對象而不是全局範圍。