2016-02-10 26 views
1

首先,我工作的一個本地 EaselJS/CreateJS項目,只測試一些精靈和鼠標交互。EaselJS精靈上(「點擊)返回CORS錯誤

我添加了一個簡單的精靈形象舞臺上,然後我把它叫做「enemy1」:

//Create the enemy sprite and add it to the stage 
var enemy_image = new Image(); 
enemy_image .src = "enemy_sprite.png"; 
var enemy1 = new createjs.Bitmap(enemy_image); 

enemy1 .x = 0; 
enemy1 .y = 0; 

stage.addChild(enemy1); 

使用此代碼,我希望每一個用戶點擊它的時候顯示一個警告:

enemy1.on("click", function() 
{ 
    alert("Clicked!"); 
}); 

宏TEAD我得到一個跨域錯誤每次點擊,如下圖所示:

enter image description here

如果問題是,我的工作地方或與之相關的跨域請求 - 爲什麼圖片負荷(並顯示)在舞臺上很好,錯誤只顯示,就像我點擊它?

回答

3

Canvas非常樂意讓您將交叉原點數據添加到它,但這樣做(沒有CORS)會污染畫布。

當您嘗試從畫布上讀取數據時,您會看到錯誤。

推測您正在使用的庫正在嘗試讀取數據作爲其代碼的一部分,以確定您點擊的內容。

+0

所以,如果你想一個單擊處理程序添加到EaselJS精靈,會怎樣你做吧?我的代碼有什麼問題?我相信這幾乎是教科書 - 假設它適用於精靈!感謝您的信息 – user1183352

+2

我會安裝一個用於開發的Web服務器(無論如何我會這樣做,因爲直接從本地文件系統進行測試在太多的地方太痛苦了) – Quentin

+2

如果你在Mac上,超級簡單的方法來啓動Web服務器,只需打開終端,cd到您的項目的目錄並輸入:python -m SimpleHTTPServer 8000。你現在可以在'localhost:8000'上訪問你的項目。或者,你可以使用'php -S localhost:8000',它會有相同的效果。如果您安裝了python或php,這些命令應該在Windows上工作。 – victmo

2

嘗試使用網絡上託管的圖像時,我遇到了similar issue。這是我寫基於這樣的答案,一個變通的功能:

function loadImg(uri) { 
    var image = document.createElement("img") 
    image.crossOrigin = "Anonymous" 
    image.src = uri 
    return image 
} 

然後做:

var enemy1 = new createjs.Bitmap(loadImg("http://example.com/enemy_sprite.png")) 
+1

同樣的答案:http://stackoverflow.com/questions/41468523/easeljs-cross-domain-images-workaround/41476881#41476881 – Lanny

+0

@蘭尼抱歉沒有試圖竊取你的雷霆,感謝您的幫助。偉大的產品。 –

+0

完全沒有 - 你的方法工作得很好 - 我已經寫了另一個,並有其他細節:)乾杯。 – Lanny