首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用默认实例化形状扩展dojo.gfx.Group

使用默认实例化形状扩展dojo.gfx.Group
EN

Stack Overflow用户
提问于 2009-12-09 08:10:30
回答 1查看 824关注 0票数 0

我正在尝试用dojo.gfx创建一些简单的UI组件。我已经设法扩展了dojo.gfx.Group,但我无法将任何默认形状绘制到表面。检查Firebug中呈现的SVG,有一个正常的节点,但没有rect。

简化后的类如下所示:

代码语言:javascript
复制
dojo.provide("gfxui.SimpleButton");

dojo.require("dojox.gfx.shape");//-¿ needed?
dojo.require("dojox.gfx.svg");
dojo.require("dojox.gfx._base");

dojo.declare("gfxui.SimpleButton", dojox.gfx.Group, {
    constructor: function(){
        this.draw();
    },
    draw:function(){
        var bg = this.createRect(this.rect_props);
        //var bg = this.createObject(dojox.gfx.Rect);
    }
}

gfxui.SimpleButton.nodeType = dojox.gfx.Group.nodeType;

dojo.extend(dojox.gfx.Surface, {
    createButton: function(){
        var button = this.createObject(gfxui.SimpleButton, null, true);
        this.add(button);
        return button;
    }
});

HTML中的javascript如下所示:

代码语言:javascript
复制
dojo.require("dojox.gfx");
dojo.require("gfxui.SimpleButton");

function init(){
    var g = dojox.gfx;
    var surface = dojox.gfx.createSurface(dojo.byId("gfx_holder"), 800, 280, "#eee");
    var button = container.createButton();
};
dojo.addOnLoad(init);
EN

回答 1

Stack Overflow用户

发布于 2009-12-12 15:33:23

我更喜欢一种简单的增强技术。以下是脚本标记的内容:

代码语言:javascript
复制
// let's include gfx (renderer will be selected dynamically)
dojo.require("dojox.gfx");

// useful short names
var d = dojo, g = dojox.gfx;

// our creator function
function createButton(color){
  // let's create our main shape: group
  var group = this.createGroup();
  // add custom properties, if any
  group._rect = group.createRect().
    setShape({x: 5, y: 5, width: 100, height: 30}).
    setStroke("black").
    setFill(color);
  return group;
}

// we want it to be available on groups and surfaces
d.extend(g.Surface, {createButton: createButton});
d.extend(g.Group,   {createButton: createButton});

// let's test the result
dojo.addOnLoad(function(){
  var s = g.createSurface(dojo.byId("surface"), 500, 400),
      b = s.createButton("red");
});

上面的例子假设有一个叫做“<div>”的表面。

增强技术适用于任何渲染器,而不管其实现方式,并且仅使用已发布的API。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1870786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档