在我制作画布的程序的另一部分中长篇短文,将它们转换为DataURL,然后将它们传递到以下部分以用作按钮的图标图像。每当我设置this.icon =" /path/to/image.jpg"时,它都会正确地提取它,但由于这些图像不在磁盘上,我不确定如何
arrowHandler: function (arrow) {
var list = [];
var library = Ext.getCmp("library");
var buttons = Ext.getCmp("numbered").menu.buttons; //where the dataURLs are pushed in another portion of the program
function btn(num) {
var image = new Image;
image.src = buttons[num].dataURL;
this.xtype = "button";
this.height = 50;
this.width = 50;
this.icon = image; //where putting an actual path works correctly, but this code doesn't
this.num = num;
this.handler = function (btn) {
btn.up("button").menu.Style = this.num;
btn.up("button").fireEvent("selected", this.num);
};
}
for (var i = 0; i <= 0; i++)
library.items.items.push(new btn(i));
},
我知道循环只是通过索引0 - 它就像有目的地进行测试一样。
解
所选的正确答案确实提供了使用DataURI设置图标的正确方法,但它不是解决我的问题。原来不是做
library.items.items.push(new btn(i));
我需要做
library.add(new btn(i));
我一直遇到的错误是&#34; c.render()不是函数&#34;。我提到这仅仅是为了让任何遇到这种错误的人都可以搜索到它。
答案 0 :(得分:2)
应与数据uri相同,您必须先转换它 https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL
var dataURL = canvas.toDataURL();
这是一个按钮小提琴: https://fiddle.sencha.com/#view/editor&fiddle/1og6