目录
1、写了很多在关键帧中的没人玩回到待机,现在想写在自定义类中,方便以后直接调用
1、有时候发现flash中使用定时器没人玩回到待机很正常,但是使用MFC打开Flash就会出现无法没人玩回到待机,最终测试发现定时器的原因
一、目的:
1、写了很多在关键帧中的没人玩回到待机,现在想写在自定义类中,方便以后直接调用
二、参考
1、Flash没人玩回到某一帧:关键帧中编写
https://blog.csdn.net/qq_40544338/article/details/85782698
- 总结:很好,写在关键帧中
2、AS3自定义事件以及发送事件(1)——发送事件
https://blog.csdn.net/qq_40544338/article/details/108992347
- 总结:自定义中可以给舞台发送事件
二、注意:
1、有时候发现flash中使用定时器没人玩回到待机很正常,但是使用MFC打开Flash就会出现无法没人玩回到待机,最终测试发现定时器的原因
- 总结:定时器要写成这样的,定时器次数设置为1
timer_delay_noPlay=new Timer(1000,1); if(!timer_delay_noPlay.hasEventListener(TimerEvent.TIMER_COMPLETE)) { timer_delay_noPlay.addEventListener(TimerEvent.TIMER_COMPLETE,TIMER_COMPLETE_timer_delay_noPlay); }
- 总结:不能写成这样
timer_delay_noPlay=new Timer(1000); if(!timer_delay_noPlay.hasEventListener(TimerEvent.TIMER)) { timer_delay_noPlay.addEventListener(TimerEvent.TIMER,TIMER_timer_delay_noPlay); }
四、操作:使用版本2.1
1、设置:参考使用版本2.0
1、自定义类:MyTimer_longNoPlay
/**********************/
// 作者:xzy
//功能:多久没人玩定时器,方便舞台调用,无人玩回到待机
//版本:2.1(20201028)
/**********************/
/*
完善:
2.1比2.0:
1、添加Clear函数,为了移除所有添加的事件等
2、将构造函数里面区分,单独设置一个Create函数,作为创建函数
2.0比1.0(20200330)添加:
定时器完成给舞台发送消息
*/
package MyLibrary
{
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event;
//功能:没人玩
public class MyTimer_longNoPlay extends MovieClip
{
static public const START:String = "START";
static public const OVER:String = "OVER";
//定时器:没人玩
public var timer_delay_noPlay:Timer = null;
//是否完成了这个定时器
public var bIsCompleteTimer:Boolean;
//功能:构造函数:没人玩
//参数1:延时多久没人玩
public function MyTimer_longNoPlay()
{
}
/*
功能:创建定时器等
参数1:延时多久没人玩
*/
public function Create(_delay:int)
{
bIsCompleteTimer = false;
if (timer_delay_noPlay==null)
{
timer_delay_noPlay = new Timer(_delay,1);
if (! timer_delay_noPlay.hasEventListener(TimerEvent.TIMER_COMPLETE))
{
timer_delay_noPlay.addEventListener(TimerEvent.TIMER_COMPLETE,TIMER_COMPLETE_timer_delay_noPlay);
}
}
}
/*
功能:移除定时器等
*/
public function Clear()
{
if (timer_delay_noPlay!=null)
{
timer_delay_noPlay.stop();
if (timer_delay_noPlay.hasEventListener(TimerEvent.TIMER_COMPLETE))
{
timer_delay_noPlay.removeEventListener(TimerEvent.TIMER_COMPLETE,TIMER_COMPLETE_timer_delay_noPlay);
}
timer_delay_noPlay = null;
}
}
//功能:设置:开启:没人玩就回到待机定时器
public function Set_startTimer()
{
timer_delay_noPlay.start();
}
//功能:设置:暂停:没人玩就回到待机定时器;
public function Set_stopTimer()
{
timer_delay_noPlay.stop();
}
//功能:重置:暂停:没人玩就回到待机定时器;
public function Set_resetTimer()
{
timer_delay_noPlay.reset();
}
public function GetIsTIMER_COMPLETE():Boolean
{
return bIsCompleteTimer;
}
public function TIMER_COMPLETE_timer_delay_noPlay(e:TimerEvent)
{
Set_stopTimer();
//TODO:定时器完成了,返回一个值
bIsCompleteTimer = true;
//分发OVER事件,
dispatchEvent(new Event(OVER));//新建事件传入String参数
}
}
}
1、关键帧调用
导入包+声明
//没人玩回到待机
import MyLibrary.MyTimer_longNoPlay;
//没人玩回到待机
var myTimer_longNoPlay:MyTimer_longNoPlay = null;
创建
//定时器:没人玩回到待机
if (myTimer_longNoPlay==null)
{
myTimer_longNoPlay = new MyTimer_longNoPlay();
}
if (! myTimer_longNoPlay.hasEventListener(MyTimer_longNoPlay.OVER))
{
myTimer_longNoPlay.addEventListener(MyTimer_longNoPlay.OVER,OVER_myTimer_longNoPlay);
}
myTimer_longNoPlay.Create(noPlay2standby);
myTimer_longNoPlay.Set_startTimer();
移除
//定时器:没人玩回到待机
if (myTimer_longNoPlay!=null)
{
if (myTimer_longNoPlay.hasEventListener(MyTimer_longNoPlay.OVER))
{
myTimer_longNoPlay.removeEventListener(MyTimer_longNoPlay.OVER,OVER_myTimer_longNoPlay);
}
myTimer_longNoPlay.Clear();
myTimer_longNoPlay = null;
}
响应自定义类发送来的事件
//长时间没人玩回到待机
function OVER_myTimer_longNoPlay(e:Event)
{
//长时间没人玩回到待机
Destroy_game();
gotoAndStop("待机");
}
四、操作:使用版本2.0(废弃)
1、自定义类:MyTimer_longNoPlay
/**********************/
// 作者:xzy
//功能:多久没人玩定时器,方便舞台调用,无人玩回到待机
//版本:2.0(20201010)
/**********************/
/*
完善:
2.0比1.0(20200330)添加:定时器完成给舞台发送消息
*/
package MyLibrary
{
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event;
//功能:没人玩
public class MyTimer_longNoPlay extends MovieClip
{
static public const START:String = "START";
static public const OVER:String = "OVER";
//定时器:没人玩
public var timer_delay_noPlay:Timer = null;
//是否完成了这个定时器
public var bIsCompleteTimer:Boolean;
//功能:构造函数:没人玩
//参数1:延时多久没人玩
public function MyTimer_longNoPlay(_delay:int)
{
bIsCompleteTimer = false;
if (timer_delay_noPlay==null)
{
timer_delay_noPlay = new Timer(_delay,1);
if (! timer_delay_noPlay.hasEventListener(TimerEvent.TIMER_COMPLETE))
{
timer_delay_noPlay.addEventListener(TimerEvent.TIMER_COMPLETE,TIMER_COMPLETE_timer_delay_noPlay);
}
}
}
//功能:设置:开启:没人玩就回到待机定时器
public function Set_startTimer()
{
timer_delay_noPlay.start();
}
//功能:设置:暂停:没人玩就回到待机定时器;
public function Set_stopTimer()
{
timer_delay_noPlay.stop();
}
//功能:重置:暂停:没人玩就回到待机定时器;
public function Set_resetTimer()
{
timer_delay_noPlay.reset();
}
public function GetIsTIMER_COMPLETE():Boolean
{
return bIsCompleteTimer;
}
public function TIMER_COMPLETE_timer_delay_noPlay(e:TimerEvent)
{
Set_stopTimer();
//TODO:定时器完成了,返回一个值
bIsCompleteTimer = true;
//分发OVER事件,
dispatchEvent(new Event(OVER));//新建事件传入String参数
}
}
}
1、舞台关键帧创建这个自定义类
//没人玩回到待机
import MyLibrary.MyTimer_longNoPlay;
//没人玩回到待机
var myTimer_longNoPlay:MyTimer_longNoPlay=null;
Start_game();
//功能:初始化
function Start_game()
{
//定时器:没人玩回到待机
if (myTimer_longNoPlay==null)
{
myTimer_longNoPlay = new MyTimer_longNoPlay(noPlay2standby);
}
if (! myTimer_longNoPlay.hasEventListener(MyTimer_longNoPlay.OVER))
{
myTimer_longNoPlay.addEventListener(MyTimer_longNoPlay.OVER,OVER_myTimer_longNoPlay);
}
myTimer_longNoPlay.Set_startTimer();
}
//移除所有的定时器
function RemoveAllTimer()
{
//定时器:没人玩回到待机
if (myTimer_longNoPlay!=null)
{
if (myTimer_longNoPlay.hasEventListener(MyTimer_longNoPlay.OVER))
{
myTimer_longNoPlay.removeEventListener(MyTimer_longNoPlay.OVER,OVER_myTimer_longNoPlay);
}
myTimer_longNoPlay = null;
}
}
//长时间没人玩回到待机
function OVER_myTimer_longNoPlay(e:Event)
{
Destroy_game();
gotoAndStop("待机");
}
1、效果
1、文件夹布置
四、操作:使用版本1.0(废弃)
1、自定义类:MyTimer_longNoPlay
/**********************/
// 作者:xzy
//功能:多久没人玩定时器,方便舞台调用,无人玩回到待机
//日期:20200330
//版本:1.0
/**********************/
package MyLibrary
{
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
//功能:没人玩
public class MyTimer_longNoPlay extends MovieClip
{
//定时器:没人玩
public var timer_delay_noPlay:Timer;
//是否完成了这个定时器
public var bIsCompleteTimer:Boolean;
// 功能:构造函数:没人玩
//参数1:延时多久没人玩
public function MyTimer_longNoPlay(_delay:int)
{
bIsCompleteTimer=false;
timer_delay_noPlay=new Timer(_delay,1);
if(!timer_delay_noPlay.hasEventListener(TimerEvent.TIMER_COMPLETE))
{
timer_delay_noPlay.addEventListener(TimerEvent.TIMER_COMPLETE,TIMER_COMPLETE_timer_delay_noPlay);
}
}
//功能:设置:开启:没人玩就回到待机定时器
public function Set_startTimer()
{
bIsCompleteTimer=false;
timer_delay_noPlay.start();
}
//功能:设置:暂停:没人玩就回到待机定时器
public function Set_stopTimer()
{
bIsCompleteTimer=false;
timer_delay_noPlay.stop();
}
//功能:重置:暂停:没人玩就回到待机定时器
public function Set_resetTimer()
{
bIsCompleteTimer=false;
timer_delay_noPlay.reset();
}
public function GetIsTIMER_COMPLETE():Boolean
{
return bIsCompleteTimer;
}
public function TIMER_COMPLETE_timer_delay_noPlay(e:TimerEvent)
{
//TODO:定时器完成了,返回一个值
bIsCompleteTimer=true;
}
}
}
1、舞台关键帧创建这个自定义类
import flash.events.Event;
import MyLibrary.MyTimer_longNoPlay;
var myTimer_longNoPlay:MyTimer_longNoPlay = null;
Start();
//功能:初始化
function Start()
{
if (myTimer_longNoPlay==null)
{
myTimer_longNoPlay = new MyTimer_longNoPlay(5000);
}
myTimer_longNoPlay.Set_resetTimer();
myTimer_longNoPlay.Set_startTimer();
if (! stage.hasEventListener(Event.ENTER_FRAME))
{
stage.addEventListener(Event.ENTER_FRAME,ENTER_FRAME);
}
}
function Destroy()
{
}
//功能:帧监听=Update
function ENTER_FRAME(e:Event)
{
if (myTimer_longNoPlay.GetIsTIMER_COMPLETE())
{
trace("自定义的类时间到了!");
if (stage.hasEventListener(Event.ENTER_FRAME))
{
stage.removeEventListener(Event.ENTER_FRAME,ENTER_FRAME);
}
//TODO:返回待机界面
}
}
1、效果
1、文件夹布置