[]绘制图形的BUG

BUG1:
package ui.test
{
import laya.display.Sprite;
import laya.utils.Tween;

public class MyBox extends Sprite
{
private var _shape:Sprite;
public function MyBox()
{
super();

graphics.drawRect(0,0,200,200,"#00ff00");

_shape=new Sprite();
_shape.graphics.drawCircle(0,0,20,"#ff0000");
addChild(_shape);
//加上这句正常,反之则异常
//_shape.cacheAsBitmap=true;

pos(300,300);

Tween.to(this,{rotation:360},3000);
}

override public function get width():Number{
return _shape.width;
}

override public function get height():Number{
return _shape.height;
}
}
}

BUG2:
package ui.test
{
import laya.display.Sprite;
import laya.events.Event;

public class MyBox1 extends Sprite
{
private var _sprite:Sprite;
public function MyBox1()
{
super();

_sprite=new Sprite();
//这里明明传入了尺寸,为什么graphics没有宽高信息
_sprite.graphics.drawRect(0,0,200,200,"#ff0000");
_sprite.cacheAsBitmap=true;
addChild(_sprite);

trace(_sprite.width,_sprite.height);//这里输出居然是 0,0.
//所以这里必须手动设置尺寸,才能生效
_sprite.size(200,200);
on(Event.CLICK,this,function():void{
trace("click");
});
}

override public function get width():Number{
return _sprite.width;
}

override public function get height():Number{
return _sprite.height;
}
}
}
已邀请:

kevinchen2046

赞同来自:

111.png

综上所述,如何实现红色并集区域的热区响应?有没有解决方案?

Laya_XS

赞同来自:

graphics画的矢量图就是没有宽高的,需要自己手动设置下,底层就是这样设计的。
第二个问题,关于注册点这块跟原生flash是不一样的,你如果在绘制时指定了注册点,就需要设置一个点击区域为你绘制的区域,要不你可以在0,0点绘制,然后通过pos设置位置,这样就不用自己在设置注册点了

要回复问题请先

商务合作
商务合作