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 = function(diagram、i){}ダイアグラムを試してみると、範囲外になります。 –
匿名関数の問題を解決するために私の答えを更新しました。それはあなたが記述した通りに正確に行うことはできませんが、可能です。私はちょうどそれをそれを分離するためにきれいに見つける。ここで重要な部分は、変数を "コピー"するために無名関数を呼び出す必要があることです。 –
ありがとうございます。私はあなたの元の解決策に踏み切ってしまいました - それは確かにきれいです。 –