layabox 1 基础

屏幕适配:

class GameMain{
public static gameStart:GameStart;
public static gameView:GameView;
public static gameOver:GameOver;
constructor()
{
  Laya.init(800,600);
  Laya.stage.scaleMode = Laya.Stage.SCALE_NOSCALE;//无缩放
  Laya.stage.alignH = Laya.Stage.ALIGN_CENTER;//水平居中
  Laya.stage.alignV = Laya.Stage.ALIGN_CENTER;//垂直居中
  Laya.stage.screenMode = Laya.Stage.SCREEN_HORIZONTAL;//自动横屏(自动检测屏幕宽高,使游戏水平显示)

相对于父容器的位置:

GameMain.gameOver.centerX = 0;
GameMain.gameOver.centerY = 40;

九宫格:

删除自己:

加载资源(没打包的和打包的):

按钮:

锤子跟随鼠标移动:

this.pos(Laya.stage.mouseX-this.width/2,Laya.stage.mouseY-this.height/3);

执行动画:

  module ui {
  export class HammerUI extends View {
          public hit:Laya.FrameClip;

  继承后的,调用一下就可以了

  this.hit.play(0,false);

鼠标:

Laya.Mouse.hide();

设置图片中心:

组件赋值:

module ui {
    export class GameUI extends View {
        public timeBar:Laya.ProgressBar;
        public scoreNums:Laya.Box;

回调函数执行:

        var hitCallBackHd:Laya.Handler = Laya.Handler.create(this,this.setScore,null,false);
        for(var i:number=0;i<this.moleNum;i++){
            var box:Laya.Box = this.getChildByName("item"+i) as Laya.Box;
            var mole:Mole = new Mole(box.getChildByName("normal") as Laya.Image,
                box.getChildByName("hit") as Laya.Image ,
                box.getChildByName("scoreImg") as Laya.Image,21,hitCallBackHd);
            this.moles.push(mole);
        }
    setScore(type:number):void{
        this.score += (type==1?-100:100);
        if(this.score<0)this.score=0;
        this.updateScoreUI();
    }
class Mole {
    private normalState: Laya.Image;    //正常状态的图片
    private hitState: Laya.Image;       //受击状态的图片
    private upY: number;                //地鼠显示状态的最高坐标Y值。
    private downY: number;              //地鼠隐藏前的最低坐标Y值。
    private scoreImg: Laya.Image;        //分数图片
    private scoreY: number;              //分数图片的最高点y值。
    private hitCallBackHd:Laya.Handler;  //受击回调函数处理器

  根据不同地鼠,处理的分数不同

  

处理器:

事件监听及结束监听:

private normalState: Laya.Image;
this.normalState.on(Laya.Event.MOUSE_DOWN,this,this.hit);
Laya.stage.off(Laya.Event.MOUSE_DOWN,this,this.onMouseDown);
  
 若 hit 函数这样写:
  hit(mm:any):void{......
this.normalState.on(Laya.Event.MOUSE_DOWN,this,this.hit,["123","456"]); 这样传参数的话
mm的类型将是string,且只能拿到"123";
this.normalState.on(Laya.Event.MOUSE_DOWN,this,this.hit,[["123","456"]]); 这样传参数的话

mm的类型将是object,且"123","456"都能拿到;

缓动动画:

private normalState: Laya.Image;
Laya.Tween.to(this.normalState,{y:this.upY},500,Laya.Ease.backOut,Laya.Handler.create(this,this.showComplete));

  位移及放大:

  

定时器:

Laya.timer.once(2000,this,this.hide);
Laya.timer.loop(2000,this,this.onLoop);

  清除定时器:

  

全局唯一的话,自动就在这里生成了:

for循环的话,注意这些步骤:

  可以弄一个box

  

  重复复制

  代码方面调用

class GameView extends ui.GameUI {
    private moles:Array<Mole>;
    private moleNum:number =9;
    constructor() {
        super();
        this.moles = new Array<Mole>();
        for(var i:number=0;i<this.moleNum;i++){
            var box:Laya.Box = this.getChildByName("item"+i) as Laya.Box;
            var mole:Mole = new Mole(box.getChildByName("normal") as Laya.Image,
                box.getChildByName("hit") as Laya.Image ,21);
            this.moles.push(mole);
        }
......

 代码里设置Laya.Image的图片:

this.normalState.skin ="ui/mouse_normal_"+this.type+".png";

 进度条(命名规范是强制的):

  进度控制,通过下面这个属性

  

得分显示:

上面两个正式显示的样子

  

posted on 2018-10-12 11:35  --LP--  阅读(898)  评论(0编辑  收藏  举报

导航