大家可能为了onEnterFrame事件或sound 的holder在bitmap上画图形 e.t.c创建mc吧
经常取奇怪的名字与深度,为了不冲突
这是一个为得到任意不显示的mc的类
名字与深度由自动控制,只需要一个位于动态层的空的mc即可
用法:
import fl.event.Timeline;
Timeline.init(/*一个位于动态层的空的mc*/);
var mc:MovieClip = Timeline.get();
//这个mc想怎么用,就怎么用
/* Do something…*/
mc.removeMovieClip();
//用完删除即可。
Class:
import fl.util.Stack;
import fl.error.TimelineNotInitError;
import fl.error.ParamError;
class fl.event.Timeline {
static var parent:MovieClip;
static var depth:Number;
static var closeList;
static var inited:Boolean = false;
/**
*初始化
*@see fl.util.Stack
*@param mc:
*@return void
*/
public static function init(mc:MovieClip):Void {
parent = mc;
parent.clear();
//parent._visible = false;
depth = 0;
inited = true;
closeList = new Stack();
}
/**
*得到一个mc
*@see fl.error.TimelineNotInit
*@throw TimelineNotInit()
*@return
*/
public static function get():MovieClip {
if (!inited) {
throw new TimelineNotInitError();
}
var redepth:Number;
try {
redepth = Number(closeList.pop());
} catch (e) {
redepth = depth++;
}
var result:MovieClip = parent.createEmptyMovieClip("p" + redepth, redepth);
result.onUnload = function() {
Timeline.del(this);
};
return result;
}
/**
*删除
*@see fl.error.Param
*@throw Param("mc")
*@param mc:
*@return void
*/
public static function remove(mc:MovieClip):Void {
if (mc._parent != parent) {
throw new ParamError("mc");
}
closeList.push(mc.getDepth());
mc.removeMovieClip();
}
/**
*清空
*@return void
*/
public static function clear():Void {
for (var i in parent) {
parent[i].removeMovieClip();
}
depth = 0;
closeList.init();
}
static function del(mc:MovieClip):Void {
closeList.push(mc.getDepth());
}
private function Timeline() {
}
}
Timeline.init(/*一个位于动态层的空的mc*/);
var mc:MovieClip = Timeline.get();
//这个mc想怎么用,就怎么用
/* Do something…*/
mc.removeMovieClip();
//用完删除即可。
Class:
import fl.util.Stack;
import fl.error.TimelineNotInitError;
import fl.error.ParamError;
class fl.event.Timeline {
static var parent:MovieClip;
static var depth:Number;
static var closeList;
static var inited:Boolean = false;
/**
*初始化
*@see fl.util.Stack
*@param mc:
*@return void
*/
public static function init(mc:MovieClip):Void {
parent = mc;
parent.clear();
//parent._visible = false;
depth = 0;
inited = true;
closeList = new Stack();
}
/**
*得到一个mc
*@see fl.error.TimelineNotInit
*@throw TimelineNotInit()
*@return
*/
public static function get():MovieClip {
if (!inited) {
throw new TimelineNotInitError();
}
var redepth:Number;
try {
redepth = Number(closeList.pop());
} catch (e) {
redepth = depth++;
}
var result:MovieClip = parent.createEmptyMovieClip("p" + redepth, redepth);
result.onUnload = function() {
Timeline.del(this);
};
return result;
}
/**
*删除
*@see fl.error.Param
*@throw Param("mc")
*@param mc:
*@return void
*/
public static function remove(mc:MovieClip):Void {
if (mc._parent != parent) {
throw new ParamError("mc");
}
closeList.push(mc.getDepth());
mc.removeMovieClip();
}
/**
*清空
*@return void
*/
public static function clear():Void {
for (var i in parent) {
parent[i].removeMovieClip();
}
depth = 0;
closeList.init();
}
static function del(mc:MovieClip):Void {
closeList.push(mc.getDepth());
}
private function Timeline() {
}
}
timeline.zip
