[]Sprite用graphics绘制图形后,mouse_over触发scale显示有问题

private _initView():void {
if(this._objectInfo.templateInfo.type == "hole") {
this._body = new Sprite();
this._body.graphics.drawCircle(0, 0, this._objectInfo.templateInfo.width, "#ff0000");
this._body.width = this._objectInfo.templateInfo.width;
this._body.height = this._objectInfo.templateInfo.height;
this.addChild(this._body);

this.on(Event.MOUSE_OVER, this, this.__onMouseOverHole);
this.on(Event.MOUSE_OUT, this, this.__onMouseOutHole);
}
this.pos(this._objectInfo.templateInfo.x, this._objectInfo.templateInfo.y);
}

private __onMouseOverHole(event:Event):void {
this._body.scale(1.2, 1.2);
}

private __onMouseOutHole(event:Event):void {
this._body.scale(1, 1);
}
代码如上,效果看图

layabox1.png

图1,初始化的时候
layabox2.png

图2,鼠标移到图形上后
已邀请:

fengjingmeng - Tink

赞同来自:

我新写了个例子,发现个新问题
import Sprite = Laya.Sprite;

class Test extends Sprite{
constructor(){
super();

this._initView();
}

private _initView():void {
let sprite:Sprite = new Sprite();
sprite.loadImage("res/scene/1001/layer1/qiang.jpg", 100, 100, 100, 100);
this.addChild(sprite);


sprite = new Sprite();
sprite.graphics.drawCircle(100, 500, 50, "#0000ff");
//sprite.graphics.scale(2, 2);
this.addChild(sprite);


sprite = new Sprite();
sprite.loadImage("res/scene/1001/layer1/qiang.jpg", 200, 700, 100, 100);
this.addChild(sprite);
}
}
这个时候显示正常

layabox3.png

 
然后把
//sprite.graphics.scale(2, 2);
这一句的注释去掉
变成了

layabox4.png

 
应该graphics搞得鬼,官方看下?

fengjingmeng - Tink

赞同来自:

@Gaomengqing 
 
项目在附件里面了,不过我知道为什么消失了
 
是graphics的scale在第三个Sprite上生效了,第三个的x,y坐标也变成了2倍
我把第三张图的初始坐标改小就能看到了

sprite.loadImage("res/scene/1001/layer1/qiang.jpg", 200, 400, 100, 100);
 

layabox5.png

 
graphics串了
 
 

fengjingmeng - Tink

赞同来自:

新疑问,
入口类
Entry.ts
/*
* 游戏入口;
*/
class Entry{
constructor(){
//程序入口
Laya.init(400, 400, Laya.WebGL);

let res:any = [];
res.push({url:"res/atlas/comp.atlas", type:Loader.ATLAS});
Laya.loader.load(res, Handler.create(null, this.__onLoaded));
}

private __onLoaded(): void {
Laya.stage.addChild(new Test());
}
}

new Entry();

 
Test.ts
import Sprite = Laya.Sprite;

class Test extends Sprite{
constructor(){
super();

this._initView();
}

private _initView():void {
let sprite:Sprite = new Sprite();

sprite = new Sprite();
sprite.graphics.drawCircle(0, 0, 50, "#0000ff");
sprite.scale(2, 2);

this.x = 100;
this.addChild(sprite);
}
}
按道理,我只是缩放子对象sprite,缩放的中心点就是按子对象
的计算,而且子对象和Test的锚点都是(0, 0),正确的效果,应该画出来的圆的相对舞台中心坐标还是(100,0)
但现在的结果是

layabox7.png

 
不知道是不是我理解错了

要回复问题请先

商务合作
商务合作