Wednesday, 10th March 2010.

Posted on Wednesday, 10th June 2009 by chris

发现了一些FlashPlayer 9 与FlashPlayer 10之间的不一样之处,很是怪异。
处理XML:
在Flash 10中将播放器设为Player 9后下面代码执行结果为

<site>
<p>world</p>
</site>

而设为Player 10后执行结果为

<p>world</p>

//以下为代码

1
2
3
var xml:XML = <config><site></site></config>;
xml = xml.site[0].appendChild("<p>world</p>");
trace(xml);

而下面这个代码的执行结果确又是一样的
//代码

1
2
3
var xml:XML = <config><site></site></config>;
xml = xml.site[0].appendChild(<p>world</p>);
trace(xml);

结果都是
<site>
<p>world</p>
</site>
有点晕,不知道是何原因。所以为了防止播放器的不一致,遇到这种appendChild()里面放置字符串的情况还是改用类似下面的写法,算Flash狠了。

1
2
3
var xml:XML = <config><site></site></config>;
xml = xml.site[0].appendChild(new XML("<p>world</p>"));
trace(xml);

这样,两个播放器也就一致了。
代码的执行顺序:
这个很有问题,如果两个代码执行顺序不一致,那可能运行的效果就完全不一致。不过两个版本确实在这方面存在差异。
如果我们只是简单地新建一个Flash文件,在里面新建一个MovieClip并且在其第一帧上增加下面的代码:

1
2
3
trace("onframe1 before call gotoandplay 10");
gotoAndStop(10);
trace("on frame 1 after call gotoandplay 10");

在其第10帧处插入下面的代码:

1
trace("now on frame 10");

把文件的设置中的播放器设成 Flash Player 9 或者 Flash Player 10 其执行结果是一致的,都是:
onframe1 before call gotoandplay 10
on frame 1 after call gotoandplay 10
now on [...]

Tags: ,
Posted in ActionScript, Flash | Comments (7)

Posted on Friday, 5th June 2009 by chris

最近很忙啊,不过这两天终于把http://www.dickies.com.cn 忙得差不多了,今天算是正式上线了,下午还是发现了几个小的bug,给改了一下,可能还会有一些,以后发现再改吧。
这次这个网站继续使用自己的这个网站框架,也进一步完善了这个框架,下一步要解决的就是框架资源占用的问题。如何能够在不依赖本地缓存又不增加内存使用的情况下保留已经加载过的文件,不至再到服务器上下载,这个看来还是个难题啊。

Tags: ,
Posted in 网站 | Comments (6)

Posted on Saturday, 18th April 2009 by chris

一直不明白如何将很多的类编译成一个swc文件,并且在Flash里可用,就像Google Map Flash API一样,今天终于找到了。http://vincent.the.tsao.googlepages.com/ 这篇文章有很详细的说明。现转于此:

Using Flex SWC Files in the Flash CS3 Authoring Environment

by Vincent Tsao

Last updated: 24-August-2008
Problem
Many API’s or code libraries written in ActionScript 3 and compiled into SWC files are meant for use with Flex tools and are unable to be imported into the Flash CS3 Authoring Environment.  This [...]

Tags: , ,
Posted in ActionScript, Flash, Flex | Comments (5)

Posted on Monday, 6th April 2009 by chris

CSS部分:
body
{
margin: 0px;
padding: 0px;
}
object
{
margin: 0px;
padding: 0px;
}
table, tr, td
{
padding: 0px;
margin: 0px;
border: 0px;
}
iframe
{
margin: 0px;
padding: 0px;
}
#body.day
{
background: #F0FF00;
}
#body.night
{
background: #000000 url(“images/night_Scene_body.jpg”) repeat;
}
BODY的内容:
<table style=”background-color: Black;” border=”0″ cellpadding=”0″ cellspacing=”0″
width=”100%”>
<tr>
<td>
<object style=”visibility: visible;” id=”bg_left” data=”night_WhoScene_bg_side.swf”
type=”application/x-shockwave-flash” height=”600″ width=”100″>
<param value=”exactfit” name=”scale”/>
<param value=”window” name=”wmode”/>
<param value=”false” name=”allowfullscreen”/>
</object>
</td>
</tr>
</table><div>
<object style=”visibility: visible;” id=”bg_bottom” data=”night_WhoScene_bg_bottom.swf”
type=”application/x-shockwave-flash” height=”40″ width=”1280″>
<param value=”exactfit” name=”scale”/>
<param value=”window” name=”wmode”/>
<param value=”false” name=”allowfullscreen”/>
</object></div>
对于IE7,显示时上面一个swf跟下面一个中间是没有间隙的,而对于ie8,firefox3,chrome1,显示时,两个flash中间都出现的间隙,整了一整天,也不知道为什么,最后发现在将html头部的
<!DOCTYPE HTML PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>改成
<!DOCTYPE html PUBLIC “-//W3C//DTD [...]

Tags: , , ,
Posted in CSS, HTML | Comments (0)

Posted on Thursday, 4th September 2008 by chris

前一阵子写了个Flash网站的框架,类似GaiaFramework,我也想做一个给它有点类似的Flash扩展,让Flash的操作跟简单,省去重复劳动,所以这两天试着写了一下jsfl,一不小心就遇到了一个“SyntaxError:unterminated string literal”的错误。

网上找了一下,也没找到好的解答。后来看了一下代码,终于明白这个错误是如何出现的了。事实上我是在Flash里调用jsfl读取了一个外部的XML文件,然后,试图在扩展面板运行时打印这段XML的内容时出现了这个错误的。
public static function out(m:String)
{
MMExecute(“fl.trace(\”” + m + “\”);”);
}
上面这个就是用来调用jsfl在面板运行时打印读取到了XML内容的ActionScript的代码了,跟GaiaFramework里的是一个样的(算我抄袭他的吧,呵呵!)。也就是调用了fl.trace这个方法打印一个字符串。看上去没什么问题,但是在我把XML作为内容给它时,却出错了,开始还以为是jsfl读取文件时有问题,后来试了一下,把XML中的换行去掉就可以打印。于是,觉得问题还在这个方法了。
再细看这个方法,其实是有问题的,这个跟在jsfl里直接调用fl.trace(m);是不一样的。如果在jsfl中直接调用,那m对于fl.trace这个方法来说就是个字符串变量,fl.trace就是在打印字符串变量了,对于字符串里是不是有换行对这个方法没有影响。
但是上面是在ActionScript中调用fl.trace方法,是没有办法把m这个变量传给fl.trace这个方法的,只能将m变量的值传给fl.trace方法了。”fl.trace(\”” + m + “\”);”这个是一个字符串,而在把它当作jsfl代码执行前,m的值以经是被替换成具体的m变量的值。相当于在执行”fl.trace(\”” + “XXXX”+ “\”);”。而这个时候,如果m的值里面有换行或者”,‘号时,就会导致上面的这段代码不合js语法。最终导致上面的错误。
如果要解决错误,就的让上面的代码符合语法规范,将换行和“,’等符号替换成相应的转意字符。
public static function out(m:String)
{
m = m.replace(/\”/g, “\\\””);
m = m.replace(/\’/g, “\\\’”);
m = m.replace(/[\r\n]+/g, “\\r”);
MMExecute(“fl.trace(\”” + m + “\”);”);
}
上面就是改后的代码,试了一下,错误没有再报,内容也打印出来了。问题解决。其实在其他的javascript中也可能会遇到类似的错误的。

Tags: , , ,
Posted in Flash, JSFL | Comments (0)