- 在线时间
- 130 小时
- 专家
- 0
- UID
- 208044
- 注册时间
- 2005-9-21
- 帖子
- 36
- 精华
- 0
- 积分
- 60
- 居住地
- 广东省 广州市
- 离线
- 892 天
- 帖子
- 36
- 体力
- 58
- 威望
- 2
- 居住地
- 广东省 广州市
|
发表于 2006-11-1 10:28:34
|显示全部楼层
/**
* @author sonygod 2006 10 31 china
* special thanks Zero
* use: to set the point of MovieClip
* include 9 point ,TL="top left" ex;
* how to use: first place this mc at your scence;
* then ,give a name of your mc ,for example:"setmc" also
*
* setmc.init("mm","link",8) mm is in your lib,link name is mm
* setmc2.init("bg.jpg","load",5)
* there are 2 event
* 动态设置MC的注册点.有9个点可以设置,比如 TL=左上,MM=中中
* 如何使用: 首先在你场景放置个mc,给个名称给它,例如:"setmc" 等等
* 我们可以设置的mc可以在库里边或者外部
*setmc.init("mm","link",8) mm是你库里链接的名称
* setmc2.init("bg.jpg","load",5)
* 有2个事件
*
setmc.addEventListener("onLinkSet", this);
setmc2.addEventListener("onLoadSet", this);
setmc.init("mm", "link", 9);
setmc2.init("bg.jpg", "linkx", 5);
function onLinkSet(evt) {
trace(evt.target+"\t"+evt.link+"\t"+evt.dir);
}
function onLoadSet(evt) {
trace(evt.target+"\t"+evt.link+"\t"+evt.dir);
}
*
*
*
*
*
*
*
*/
import mx.events.EventDispatcher;
class SetMc extends MovieClip {
public var addEventListener:Function;
public var removeEventListener:Function;
public var dispatchEvent:Function;
private static var TL = 7;
private static var TM = 8;
private static var TR = 9;
private static var ML = 4;
private static var MM = 5;
private static var MR = 6;
private static var BL = 1;
private static var BM = 2;
private static var BR = 3;
private var xDir;
private var target:String;
private var link:String;
private var dir:Number;
private var yDir:Number;
private var detaill:MovieClipLoader;
private var dlistener:Object;
private var subTarget:MovieClip;
private static var thisclass="SetMc";
private static var _mixin1 = EventDispatcher.initialize(SetMc.prototype);
function SetMc() {
trace("setMc class has load.........");
}
public function init(target:String, link:String, dir:Number) {
this.target = target;
this.link = link;
this.dir = dir;
setXY(dir);
var loader= this.createEmptyMovieClip("loader", 0);
if (link == "link") {
subTarget = loader.attachMovie(target, "targetok", 0);
setPostion(subTarget);
this.dispatchEvent({type:"onLinkSet", target:target,link:link,dir:dir});
} else {
callDetail(target, loader);
}
}
private function setXY(dir) {
if (dir == TL || dir == ML || dir == BL) {
xDir = 0;
} else if (dir == TM || dir == MM || dir == BM) {
xDir = -0.5;
} else {
xDir = -1;
}
if (dir == TL || dir == TM || dir == TR) {
yDir = 0;
} else if (dir == MM || dir == ML || dir == MR) {
yDir = -0.5;
} else {
yDir = -1;
}
}
public function callDetail(file, mc) {
detaill = new MovieClipLoader();
dlistener = new Object();
dlistener.bto=this;
dlistener.onLoadInit = function(tar) {
this.bto.setPostion(mc);
this.bto.dispatchEvent({type:"onLoadSet", target:this.bto.target,link:"load",dir:this.bto.dir});
};
dlistener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
//your can add your code here
};
dlistener.onLoadStart = function(tar) {
//your can add your code here
};
detaill.addListener(dlistener);
detaill.loadClip(file, mc);
}
public function setPostion(tar:MovieClip) {
tar._x = tar._width*xDir;
tar._y = tar._height*yDir;
}
} |
|