[AS v2.0]一个填充类(貌似网页的重复背景图像)
起初是想写一个高效率的填充背景的方法,没想到写着写着竟然写成了我最成功的一个AS v2.0类 :)
(尽管只有一个构造函数……)
不过发现AS的效率做这个真的是不很合适 -_-b



/*/
 * 标题: 填充类 
 * 描述: 使用链接自库中的元件填充指定的MC 
 * 版权: (c) 2005 hjc Copyright 
 * 作者: hjc
 * 版本: 1.0
 * 时间: 2005.05.13
/*/
class Fill {
	//将要填充的MC
	private var mc:MovieClip;
	//库中链接的标识符
	private var link:String;
	//用于确定是否将填充层作为背景,即深度最低
	private var bottom:Boolean;
	//填充层的深度
	private var depth:Number;
	//可选参数,指定填充范围的宽
	private var width:Number;
	//可选参数,指定填充范围的高
	private var height:Number;
	//临时变量,用于确定循环中MC的深度
	private var n:Number = 0;
	//----------------------------------------
	//----------构造函数----------
	function Fill(my_mc:MovieClip, my_link:String, my_bottom:Boolean, my_width:Number, my_height:Number) {
		mc = my_mc;
		link = my_link;
		//----------------------------------------
		//----------是否为背景填充----------
		if (my_bottom) {
			depth = -16384;
		} else {
			depth = mc.getNextHighestDepth();
		}
		//----------------------------------------
		//----------重载:宽----------
		if (typeof (my_width) != "number") {
			width = mc._width;
		} else {
			width = my_width;
		}
		//----------------------------------------
		//----------重载:高----------
		if (typeof (my_height) != "number") {
			height = mc._height;
		} else {
			height = my_height;
		}
		//----------------------------------------
		//----------创建填充层----------
		mc.createEmptyMovieClip("tmp", depth);
		//----------------------------------------
		//----------排列----------
		for (var i = 0; i<Math.ceil(height/mc.tmp.mc1._height); i++) {
			for (var j = 0; j<Math.ceil(width/mc.tmp.mc1._width); j++) {
				mc.tmp.attachMovie(link, "mc"+(n+1), n+1);
				eval(mc+".tmp.mc"+(n+1))._x = mc.tmp.mc1._width*j;
				eval(mc+".tmp.mc"+(n+1))._y = mc.tmp.mc1._height*i;
				n++;
			}
		}
	}
}




new Fill(_root, "my_link", true);//填充场景,深度最低
new Fill(_root, "my_link", false);//填充场景,深度最高

new Fill(my_mc, "my_link", true);//填充my_mc,深度最低
new Fill(my_mc, "my_link", false);//填充my_mc,深度最高

new Fill(my_mc, "my_link", true, 50, 100);//填充my_mc,深度最低,面积为5000=50*100
new Fill(my_mc, "my_link", false, 50, 100);//填充my_mc,深度最高,面积为5000=50*100

ps:my_mc和my_link的注册点均为左上角。
[2005-5-13 1:37]

{CommentAuthor} [{CommentTime}]  
{CommentContent}