Egret社区
1银子
我自己继承了一个container,然后注册这个container的touch_tap事件,但是点了没反应,只有点在里面的一个bitmaph才会有反应,
但这不是我想要的结果。
这是代码
[mw_shl_code=actionscript3,true]class MyContainer extends egret.DisplayObjectContainer{

    private loadingViewoadingUI;

    private hammer:egret.Bitmap;

    public constructor(){
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE,this.onAddToStage,this);
    }

    private onAddToStage(event:egret.Event):void{
        //设置加载进度界面
        this.loadingView  = new LoadingUI();
        this.stage.addChild(this.loadingView);


        //初始化Resource资源加载库
        RES.addEventListener(RES.ResourceEvent.CONFIG_COMPLETE,this.onConfigComplete,this);
        RES.loadConfig("resource/resource.json","resource/");
    }
    /**
     * 配置文件加载完成,开始预加载preload资源组。
     */
    private onConfigComplete(event:RES.ResourceEvent):void{
        RES.removeEventListener(RES.ResourceEvent.CONFIG_COMPLETE,this.onConfigComplete,this);
        RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.onResourceLoadComplete,this);
        RES.addEventListener(RES.ResourceEvent.GROUP_PROGRESS,this.onResourceProgress,this);
        RES.loadGroup("preload");
    }
    /**
     * preload资源组加载完成
     */
    private onResourceLoadComplete(event:RES.ResourceEvent):void {
        if(event.groupName=="preload"){
            this.stage.removeChild(this.loadingView);
            RES.removeEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.onResourceLoadComplete,this);
            RES.removeEventListener(RES.ResourceEvent.GROUP_PROGRESS,this.onResourceProgress,this);
            this.createGameScene();
        }
    }
    /**
     * preload资源组加载进度
     */
    private onResourceProgress(event:RES.ResourceEvent):void {
        if(event.groupName=="preload"){
            this.loadingView.setProgress(event.itemsLoaded,event.itemsTotal);
        }
    }


    private createGameScene():void{


       this.hammer = this.createBitmapByName("hammer");
        var stageW:number = this.stage.stageWidth;
        var stageH:number = this.stage.stageHeight;

        this.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onTouchTap, this);
        this.touchEnabled = true;



       this.hammer.x = stageW / 2;
       this.hammer.y = stageH / 2;

       this.hammer.rotation = -45;

        this.hammer.anchorX = 0.5;
        this.hammer.anchorY = 0;

        this.addChild(this.hammer);

        var tw = egret.Tween.get(this.hammer,{loop:true});


       tw.to({rotation:45},1000,egret.Ease.sineInOut).to({rotation:-45},1000,egret.Ease.sineInOut);

    }
    /**
     * 根据name关键字创建一个Bitmap对象。name属性请参考resources/resource.json配置文件的内容。
     */
    private createBitmapByName(name:string):egret.Bitmap {
        var result:egret.Bitmap = new egret.Bitmap();
        var texture:egret.Texture = RES.getRes(name);
        result.texture = texture;
        return result;
    }

    private onTouchTap(evt:egret.TouchEvent) {
        this.hammer.x = evt.stageX;
        this.hammer.y = evt.stageY;

        console.log(evt.stageX);

    }
}[/mw_shl_code]

参与人数 1威望 +1 收起 理由
houhou + 1

查看全部评分

分享到 :
0 人收藏

4 个回复

倒序浏览
guawoo  登堂入室 | 2014-9-21 10:42:11
已经解决,原来容器是不能被监听到touch事件的
张宇  官方团队 | 2014-9-21 14:39:39
容器也可以监听touch的。
container.touchEnable = true;//允许触摸
container.width = 100;//增加触摸区域
container.height=100;
龍劍  登堂入室 | 2014-9-21 17:52:44
楼上正解,width和height要设置了才能响应,我也踩过这个坑╮(╯▽╰)╭
guawoo  登堂入室 | 2014-9-21 19:26:17
张宇 发表于 2014-9-21 14:39
容器也可以监听touch的。
container.touchEnable = true;//允许触摸
container.width = 100;//增加触摸区域 ...

不行啊,,我在上面我贴的代码,设置了
this.width = stageW
this.height = stageH
不起作用,我只有加了一个bg 的bitmap,然后设置它的宽高为整个舞台才行,我现在的代码是这样
[mw_shl_code=actionscript3,true] private createGameScene():void{



        this.hammer = this.createBitmapByName("hammer");
        var stageW:number = this.stage.stageWidth;
        var stageH:number = this.stage.stageHeight;

        this.bear = this.createBitmapByName("bear");
        this.bear.x = 200;
        this.bear.y = 200;
        this.addChild(this.bear);

        this.bg = new egret.Bitmap();
        this.bg.width = stageW;
        this.bg.height = stageH;
        this.addChild(this.bg);
        this.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onTouchTap, this);
        this.addEventListener(egret.Event.ENTER_FRAME,this.upDate,this);
        this.touchEnabled = true;


        this.hammer.x = stageW / 2;
        this.hammer.y = stageH / 2;

        this.hammer.rotation = -45;

        this.hammer.anchorX = 0.5;
        this.hammer.anchorY = 0;

        this.addChild(this.hammer);

        var tw = egret.Tween.get(this.hammer,{loop:true});


       tw.to({rotation:45},1000,egret.Ease.sineInOut).to({rotation:-45},1000,egret.Ease.sineInOut);

    }[/mw_shl_code]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部