2015-08-28 33 views
0

所以我想裁剪一個圖像,尺寸爲400px,它在名爲img1的專業flash庫中。使用createJS中的sourceRect裁剪位圖不起作用

puzzlePieceBmp = new createjs.Bitmap(new lib.img1()) 
puzzlePieceBmp.sourceRect = new createjs.Rectangle(0, 0, 100, 100); 
stage.addChild(puzzlePieceBmp.image) 

無論我爲sourceRect選擇什麼,該圖像始終顯示爲一個整體。難道我做錯了什麼?當我在控制檯中查找時,sourceRect具有我定義的尺寸。我確認舞臺已更新。

+0

首先,你的代碼發佈將產生一個錯誤。你應該添加位圖到舞臺上,而不是Image:'stage.addChild(puzzlePieceBmp);'。由於sourceRect似乎正常工作,你可能會做其他的事情:http://jsfiddle.net/dhkvxz5a/ – gskinner

+0

@gskinner如果我使用stage.addChild(puzzlePieceBmp),並且沒有錯誤,則不會顯示出來。 – Condward

+0

你將不得不進一步隔離你的問題。正如我上面的例子所示,sourceRect使用您提供的代碼工作。你確定你的圖片在右上角不是空的嗎? – gskinner

回答

0

除非您更改了設置,否則導出的「lib」對象中的資產都是顯示對象符號。圖像可以通過「img」對象訪問。

因此,您的代碼正在做什麼,正在創建一個新的「img1」位圖實例,試圖使其成爲第二個Bitmap實例的源圖像,將源矩形添加到該第二個Bitmap,然後添加原始「img1 「位圖(沒有sourceRect)到舞臺上(通過訪問bmp.image)。

爲了解決這個問題,剛剛擺脫第二位圖: puzzlePieceBmp = new lib.img1(); // this creates a Bitmap, not an Image puzzlePieceBmp.sourceRect = new createjs.Rectangle(0, 0, 100, 100); stage.addChild(puzzlePieceBmp);

+0

我解決了這個問題,我沒有選中「導出所有位圖爲Spritesheets」,並使用你給我的相同代碼。謝謝 – Condward