I Love China

技术·人生

技术服务生活
繁體

Archive for the ‘Flash AS2’ Category

[as2]一个利用A*寻路算法的例子

星期一, 12月 24th, 2007

AS2


规则:
1、轮流拖动棋子到任意方格中
2、白子的目的是从左侧到右侧形成一条通路,黑子的目的是从下至上形成一条通路。先形成通路的赢。
3、白子黑子都由人控制。
这里使用A*寻路算法只是判断是否已经赢了。

[as]ConvolutionFilter做烟火特效

星期三, 11月 14th, 2007

AS2

详情请看这里ConvolutionFilter做烟火特效

[as2]单/和//的疑问

星期一, 11月 12th, 2007

AS2在Flash里当需要动态加载XML、图片、声音、视频或者仅仅要加载变量都需要指定路径,大多数时候路径并不是一个,特别是需要加载一系列图片的时候,这时候路径往往是由几个变量相加而成,这种情况下往往会造成路径中文件夹分隔符可能会是不止1个/,今天遇到的一种情况是加载视频时,生成的路径里使用了两个/作为文件夹分隔符,比如本来应该是flvfile/1/test.flv,结果写成了flvfile/1//test.flv,在我机器上测试很正常,但是换了个机器后视频无法加载,提示streamNotFound,把路径改成flvfile/1/test.flv后加载正常。而加载图片时,尽管路径里也都有两个/,但是在两台机器上均正常显示!
不解.~~~~

[as2]利用发光滤镜和圆形做动态遮罩的图片切换效果

星期三, 11月 7th, 2007

AS2利用发光滤镜GlowFilter和圆形,可以作出漂亮的遮罩效果。如下:

详情请看这里GlowFilter+圆形做的图片轮换效果

[as2]遍历某个XML节点下的所有子节点

星期五, 10月 26th, 2007

AS2
AS Code

// 遍历节点parentXML下的所有子节点,要求节点都具有名为label的属性,以便trace结果,或者有其他可供trace的属性也可
function parse_xml(parentXML:XMLNode)
{
	var xmlNode:XMLNode = parentXML.firstChild;
	while(xmlNode != null)
	{
		trace(xmlNode.attributes["label"])
		// 如果当前节点有子节点,则转入子节点
		if(xmlNode.hasChildNodes())
		{
			trace("进入子节点")
			xmlNode = xmlNode.firstChild;
			continue;
		}
		// 如果当前节点的同级下一个节点不为null,显示同级下一个节点
		if(xmlNode.nextSibling != null)
		{
			xmlNode = xmlNode.nextSibling
			continue
		}
		// 如果同级下一个节点为null,父节点不为null,父节点不为统计的最顶层节点,则循环回溯
		while(xmlNode.parentNode != null && xmlNode.parentNode != parentXML && xmlNode.nextSibling == null)
		{
			xmlNode = xmlNode.parentNode;
		}
		xmlNode = xmlNode.nextSibling
	}
}

[AS2组件]把使用组件的SWF加载到其他SWF中的问题

星期日, 10月 21st, 2007

AS2[问题描述]:a.swf文件中使用ComboBox组件做了下拉框,单独打开a.swf,下拉框正常,b.swf是个外框文件,现在要用b.swf把a.swf加载到b.swf里的一个MC里,结果a.swf中的下拉框不正常了,下拉框里的项是正常的,就是点击后打不开列表,经测试,ComboBox的open事件也触发了,但是就是不显示列表。

[探索]:查遍Flash帮助、Flash组件帮助也没找到答案。无奈,只好打开ComboBox.as文件,看代码,700多行代码可不好看。在打开组件源文件,把ComboBox的组件源MC拖到新文件t1.fla里,然后在ComboBox.as里查找open事件,会看到它调用的是displayDropdown函数,然后再找到这个函数定义的地方,一句句读,看到一句
AS Code

var dd = __dropdown;

,从字面意思猜,它就应该是那个下拉弹出框,所以在它后面添加一句
AS Code

trace("dd " + dd);

,重新导出t1.fla,看到了trace出的语句dd _level0.depthChild0,然后新建t2.fla,新建空元件load,把load拖到舞台上,使用load作为容器加载t1.swf,结果trace出来是dd null,显然问题就出在这里。
(阅读全文…)