Egret社区
我的Button给它设置好皮肤后,添加到Group里,接着在测试的时候发现我的按钮在皮肤外的按钮都能被响应,这是为啥子?谢谢啊


var group:egret.Group = new egret.Group();
        var layout:egret.HorizontalLayout = new egret.HorizontalLayout();
        layout.horizontalAlign = egret.HorizontalAlign.LEFT;
        layout.verticalAlign = egret.VerticalAlign.TOP;
        group.layout = layout;
        //group.left = group.top = group.right = group.bottom = 50;
        group.percentHeight = 100;
        group.percentWidth = 100;
        group.horizontalCenter = 0;
        //group.rotation = 180;
        //group.verticalCenter = Data.getStageHeight()-150;
        this.addElement(group);
        var upButton:egret.Button = new egret.Button();
        CKeyButtonSkin.upButtonName = "keyup_up";
        CKeyButtonSkin.downButtonName = "keyup_down";
        upButton.skinName = CKeyButtonSkin;

分享到 :
0 人收藏

14 个回复

倒序浏览
dom  圆转纯熟 | 2014-8-19 11:28:16
dom 发表于 2014-8-19 11:19
你这两句是几个意思?改成100;

这里应该是引擎的碰撞检测的bug。我们会在后续的版本里修复这个问题。现在的表现是空的容器自身也会相应鼠标事件。所以你先改成100;应该可以规避过去。你的写法是没问题的。
dom  圆转纯熟 | 2014-8-19 11:30:23
coyote 发表于 2014-8-19 11:26
原来我是以为是设置皮肤的宽高比,设置成100,成功解决了。能在问下如何给group定义,让在该组产生的UI组 ...

设置那个Layout.gap = 2,这个2就是间距
dom  圆转纯熟 | 2014-8-19 11:19:05
coyote 发表于 2014-8-19 11:14
去掉还是一样会响应
  1. this.upSkin.percentHeight = this.upSkin.percentWidth = 50;
  2.         this.downSkin.percentHeight = this.downSkin.percentWidth = 50;
复制代码

你这两句是几个意思?改成100;
guoshaorui  超级斑竹 | 2014-8-18 09:02:34
你用的好像不是最新版
应该是new egret.gui.Group()而不是new egret.Group()
你先更新到最新版,重新安装一下,然后记得覆盖一下项目里的egret.d.ts
coyote  登堂入室 | 2014-8-19 05:59:54
guoshaorui 发表于 2014-8-18 09:02
你用的好像不是最新版
应该是new egret.gui.Group()而不是new egret.Group()
你先更新到最新版,重新安装一 ...

版本更新后,依旧鼠标点击时会在按钮以外的区域触发按钮,这
dom  圆转纯熟 | 2014-8-19 11:06:03
coyote 发表于 2014-8-19 05:59
版本更新后,依旧鼠标点击时会在按钮以外的区域触发按钮,这

贴一下你的CKeyButtonSkin代码
coyote  登堂入室 | 2014-8-19 11:07:22
dom 发表于 2014-8-19 11:06
贴一下你的CKeyButtonSkin代码

public constructor(){
        super();
        this.minWidth = 140;
        this.height = 60;
        this.states = ["up","down"];
    }

    private static _skinParts:Array<string> = ["labelDisplay"];
    public static notPressKey:Array<string> = ["keydown_up","keyleft_up","keyrght_up","keyup_up"];
    public static succesPressKey:Array<string> = ["keydown_down","keyleft_down","keyrght_down","keyup_down"];
    public static maxIndex:number = 3;
    public static minIndex:number = 0;

    public get skinParts():Array<string>{
        console.log("我是按键皮肤部件");
        return CKeyButtonSkin._skinParts;

    }
    /**
     * [SkinPart]
     */
    public labelDisplay:egret.gui.Label;

    private upSkin:egret.gui.UIAsset;
    private downSkin:egret.gui.UIAsset;
    private disabledSkin:egret.gui.UIAsset;


    public static upButtonName:string;
    public static downButtonName:string;
    public createChildren():void{
        super.createChildren();
        this.upSkin = new egret.gui.UIAsset();
        this.upSkin.percentHeight = this.upSkin.percentWidth = 50;
        this.upSkin.source = CKeyButtonSkin.upButtonName;

        this.addElement(this.upSkin);


        this.downSkin = new egret.gui.UIAsset();
        this.downSkin.percentHeight = this.downSkin.percentWidth = 50;
        this.downSkin.source = CKeyButtonSkin.downButtonName;
        this.addElement(this.downSkin);

        this.disabledSkin = new egret.gui.UIAsset();
        this.disabledSkin.percentHeight = this.disabledSkin.percentWidth = 100;
        this.disabledSkin.source = "keydown_down";
        this.addElement(this.disabledSkin);



        this.labelDisplay = new egret.gui.Label();
        this.labelDisplay.maxDisplayedLines = 1;
        this.labelDisplay.size = 20;
        this.labelDisplay.fontFamily = "Tahoma";
        this.labelDisplay.textColor = 0x1a1815;
        this.labelDisplay.left = 10;
        this.labelDisplay.right = 10;
        this.labelDisplay.top = 10;
        this.labelDisplay.bottom = 10;
        this.labelDisplay.textAlign = egret.HorizontalAlign.CENTER;
        this.labelDisplay.verticalAlign = egret.VerticalAlign.MIDDLE;
        this.addElement(this.labelDisplay);

        console.log(CKeyButtonSkin.downButtonName+"--"+CKeyButtonSkin.upButtonName);
    }

    public commitCurrentState():void{
        super.commitCurrentState();
        switch (this.currentState){
            case "up":
                this.upSkin.visible = true;
                this.disabledSkin.visible = false;
                this.downSkin.visible = false;
                break;
            case "down":
                this.downSkin.visible = true;
                this.disabledSkin.visible = false;
                this.upSkin.visible = false;
                break;
            case "disabled":
                this.disabledSkin.visible = true;
                this.downSkin.visible = false;
                this.upSkin.visible = false;
                break;

        }
    }
dom  圆转纯熟 | 2014-8-19 11:09:49
coyote 发表于 2014-8-19 11:07
public constructor(){
        super();
        this.minWidth = 140;

把你构造函数里这两行去掉试试:
this.minWidth = 140;
        this.height = 60;
dom  圆转纯熟 | 2014-8-19 11:13:40
dom 发表于 2014-8-19 11:09
把你构造函数里这两行去掉试试:
this.minWidth = 140;
        this.height = 60;

另外我看出你写的这个皮肤的意思了。是想复用ButtonSkin。但你声明的静态变量没用啊。静态变量是共享的,这样你new出来的每个皮肤不都是一样的素材了么?应该去掉static。然后通过皮肤的构造函数传入那两个素材名。像这样:
  1. var buttonSkin:CKeyButtonSkin = new CKeyButtonSkin("upSkinName","downSkinName");
  2. button.skinName = buttonSkin;
复制代码

skinName是可以直接传入一个对象实例的,不一定必须是类定义
coyote  登堂入室 | 2014-8-19 11:14:42
dom 发表于 2014-8-19 11:09
把你构造函数里这两行去掉试试:
this.minWidth = 140;
        this.height = 60;

去掉还是一样会响应
dom  圆转纯熟 | 2014-8-19 11:17:29
coyote 发表于 2014-8-19 11:14
去掉还是一样会响应

发个截图看看
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部