0
//Draw Icon
for (var i = 0; i < diagram.Children.length; i++) {
if (diagram.Children[i].Icon != -1) {
var myImage = new Image();
myImage.xOffset = diagram.Children[i].Offset.X;
myImage.yOffset = diagram.Children[i].Offset.Y;
myImage.componentName = diagram.Children[i].Name;
myImage.componentLevel = diagram.Level;
myImage.componentID = diagram.ID;
myImage.type = diagram.Type;
myImage.onload = function() {
var self = this;
var iconImage = new Kinetic.Image({
image: self,
x: self.xOffset,
y: self.yOffset,
tooltip: CreateTooltip(self.componentName, self.componentID, self.type),
componentLevel: self.componentLevel,
componentID: self.componentID
});
_stage.diagramLayer.add(iconImage);
_stage.diagramLayer.draw();
}
//TODO: IE8+ doesn't support data URI's unless they are defined in css.
//myImage.src = 'data:image/png;base64,' + diagram.Children[i].Icon;
myImage.src = '../PlanView/RenderIcon?IconID=' + diagram.Children[i].Icon;
}
}
在加載圖像之前,必須將我的數據存儲爲圖像的屬性似乎違反直覺才能在'onload'事件期間訪問這些屬性。不過,我找不到替代品。我想知道是否有人有任何想法。謝謝。image.onLoad - 我應該如何保持數據可用,直到觸發?
嘿,謝謝你,我會接受它作爲答案,如果這是最好的。是否有可能將doImageStuff的參數傳遞給匿名函數?如果我嘗試myImage.onload =函數(圖,我){}圖,我超出了範圍。 – 2012-03-27 19:31:50
更新了我的答案以解決匿名函數的問題。它不能像你所描述的那樣完成,但是可能的。我覺得它更清潔,可以分離出來。這裏的重要部分是需要調用匿名函數來「複製」變量。 – 2012-03-27 19:41:07
謝謝。我最終選擇了最初的解決方案 - 它確實更清潔。 – 2012-03-27 21:56:55