某些游戲里新手指引需要一個半透明遮罩,強制用戶按照指引操作。
當然,有些游戲只是提示,用戶依然可以點擊其他的按鈕,進行其他操作。
無遮罩的新手指引

有遮罩的指引

在主頁場景里創建指引遮罩GuideMask
HomeScene.ts:
/**
* 主頁場景
* @author chenkai
* @since 2017/7/4
*/
class HomeScene extends eui.Component{
public constructor() {
super();
this.skinName = "HomeSceneSkin";
}
public childrenCreated(){
GuideMask.getInstance().show(560, 900, 80, 100, this);
}
}
指引遮罩,是在需要透明的區域四周,創建4個黑色半透明的Rect,來屏蔽其他按鈕,用戶只能點擊指引要求點擊的按鈕。
GuideMask.ts:
/**
* 新手指引的遮罩
* @author chenkai
* @since 2017/7/4
*
* 在不需遮罩的矩形區域四周,創建4個半透明rect。
*
* example:
* 在(100,100)位置,顯示200x50的可點擊區域
* GuideMask.getInstance().show(100,100,200, 50, this);
* GuideMask.getInstance().hide();
*/
class GuideMask extends eui.Group{
/**顏色 */
public color:number = 0x000000;
/**透明度 */
public alpha:number = 0.5;
public constructor() {
super();
}
public childrenCreated(){
this.touchEnabled = true;
this.touchChildren = true;
}
//單例
private static instance:GuideMask;
public static getInstance():GuideMask{
if(this.instance == null){
this.instance = new GuideMask();
}
return this.instance;
}
/**
* 顯示指引半透明遮罩
* @x 不需遮罩的矩形區域x
* @y 不需遮罩的矩形區域y
* @w 不需遮罩的矩形區域寬度
* @h 不需遮罩的矩形區域高度
* @doc GuildMask顯示的容器
*/
public show(x:number, y:number, w:number, h:number, doc:egret.DisplayObjectContainer){
var stage:egret.Stage = egret.lifecycle.stage;
//上部遮罩
var rectTop:eui.Rect = new eui.Rect(stage.stageWidth, y, this.color);
rectTop.x = 0;
rectTop.y = 0;
this.addChild(rectTop);
//下部遮罩
var rectFoot:eui.Rect = new eui.Rect(stage.stageWidth, stage.stageHeight - y - h, this.color);
rectFoot.x = 0;
rectFoot.y = h+y;
this.addChild(rectFoot);
//左邊遮罩
var rectLeft:eui.Rect = new eui.Rect(x, h, this.color);
rectLeft.x = 0;
rectLeft.y = y;
this.addChild(rectLeft);
//右邊遮罩
var rectRight:eui.Rect = new eui.Rect(stage.stageWidth - x - w, h, this.color);
rectRight.x = x + w;
rectRight.y = y;
this.addChild(rectRight);
doc.addChild(this);
}
/**
* 隱藏
*/
public hide(){
this.removeChildren();
this.parent && this.parent.removeChild(this);
}
}
Demo下載:
https://files-cdn.cnblogs.com/files/gamedaybyday/Egret5.0.1_GuildExample.7z
