
一不小心电脑上又有这么多flashplayer的安装包了,每下载一个新版本都会清除以前的,于是就木有6、7、8了……
每个版本的flashplayer图标都在变化,总体来说是越变越“红”,除了flashplayer 8是个例外(就是这个版本第一次引入了令人惊讶的滤镜效果,很帅!)。
flashplayer的体积也随着版本的增大而增大,越来越胖了,不过相比Flash IDE的体积变化来说,这个实在是小巫见大巫,我们看看Flash IDE的变胖过程...
需求总是不断变化的,相信有非常多的人也碰到过类似的问题:比如鼠标移到flash上就把flash放大,鼠标移开就缩小,嗯,说了半天其实这个东西就是用来做广告的。
一般的怎么做的呢?无非是在flash里面用ExternalInterface来调JavaScript,用JavaScript来调整swf的大小或者切换另一个swf,或者索性就在swf的上面覆盖一个透明层(貌似要用空白的图片才好使,否则事件还是会跑到swf里面去,而不是给这个层d),然后用这个层来捕捉事件,然后调整swf的大小。
相信很多“挑剔”的人都和我一样,嫌这个方法太麻烦,又不好看。为什么不能直接写在swf里面呢?我也不知道为什么,Adobe没有提供这个接口……不过ActionScript不是可以调JavaScript吗?而且JavaScript也可以写在ActionScript里面,干嘛不从这里打点主意呢?
很好,actionscript.org上就有一篇很好的文章讲怎么在ActionScript中注入JavaScript或者VBScript。不过,显然是有人和我们一样“挑剔”,利用这个写了一个用来改变自身大小的swf,demo在这里,这里有详细的说明和源码下载...
2009-1
前几个月的时候就说过在JavaScript应用中使用Flash来存储本地数据,使用这个方式有一个非常大的好处就是:不同的浏览器可以共享相同的本地数据。
现在终于抽空整理了一下以前的应用,作为一个简单的开源项目发布了。在Google Code上的地址是:http://code.google.com/p/fookie/,代码里面有可以在vs中智能提示的文档。
JavaScript类名为Fookie,提供了以下几个Public方法:
- Fookie.init(swfUrl, options);
- Fookie.read(key);
- Fookie.write(key, value);
- Fookie.remove(key);
- Fookie.clear();
2009-1
示例,红颜色的是三角形的分割线。
混乱丑陋但是完整而且可以跑的测试代码(全部放在第一帧就可以了)...
转载请注明出处:http://ooboy.net,作者:Fdream
放着放着就忘了,多亏army同学在后面催我,要不然还真不知道什么时候会继续弄这个。今天上午又抽空捣鼓了一下,偏移总算是弄出来了,不过渲染效率很低,中间的计算过程应该还可以继续优化的。另外,弄到这里发现还是有问题,分得较细的时候会出现裂缝……误差真可怕!
先不管这个误差,我们来看看能不能形变先。由于计算形变矩阵需要初始的坐标和新的坐标,需要两个方法来计算(貌似可以合并?):
// calculate points
// 包含x坐标和y坐标,分别存储在pxs和pys数组中
// @params:
// w: 位图宽
// h: 位图高
// hs: 水平分段数
// vs: 垂直分段数
// @return:
// void
function CalculatePoints(w:Number, h:Number, hs:Number, vs:Number):void {
var iw:Number = w / hs;
var ih:Number = h / vs;
for (var h=0; h<=hs; h++) {
pxs[h] = h * iw;
}
for (var v=0; v<=vs; v++) {
pys[v] = v * ih;
}
}
Firefox速度快,可惜就是爱缓存,即使你在HTTP请求头部里面设置了no-cache,或者你在本地调试,Firefox都会毫不在意地一如既往地缓存你的swf,即使你设置了你的缓存空间大小为0还是一样。(IE也差不多,不过貌似有时候Ctrl+F5还是有用的)。
在Firefox下是可以这样解决的:
- 打开一个新的标签页(TAB)
- 在地址栏输入about:config
- 同意它的警告提示,就是答应它你会小心的(I'll be careful, I promise!)
- 在过滤器(filter)里输入browser.cache.disk.enable,选中那一行结果,改变其值为false
这样子就不会缓存任何东西了,要想让缓存功能生效,记得改回来就是了~
2008-11
对不起,让大家久等了,继续写blog。
今天我们继续研究位图的任意形变,今天的主要目的就是从外部加载一张图片,然后分割成两个三角形。当然了,分割成两个三角形是远远不够的,这一点,我们在后面会讲到。
从外部加载一张图片很简单,使用Loader类就可以轻松完成了。不过要注意的是这里是Loader类,在包flash.display下,而不是flash.net下的URLLoader类。这个类使用很简单,如下(为了简单,这就不写那些条条框框了,直接写在时间轴上了,所有的代码都在第一帧):
// 这个是我们要load的图片
var url:String = 'green.jpg';
//这个是用来保存位图数据的
var bmd:BitmapData = null;
// load方法
function Load():void {
var req:URLRequest = new URLRequest(url);
var loader:Loader = new Loader();
// 添加事件侦听
ConfigureListeners(loader.contentLoaderInfo);
try {
// 加载图片
loader.load(req);
// 如果你要在舞台上显示出来
// 可以添加下面的代码...
2008-11
由于仿射变换时,平行的边依然平行,所以,我们无法对一个矩形的位图进行随意变换,比如我们无法拉伸一个角,也无法进行把它变成梯形等。在上文中,我们提到过一种思路,就是把矩形分割成两个三角形,这样变换时从表面上看来就没有什么平行边了,这样我们就可以变换其中的一个或者多个角了。注意,我这里说的是从表面上看,这一点在后面的变换中要进行一定的处理的。
这样我们只需要对三个点进行平面变换,假设我们的三个点分别为(x1, y1)、(x2, y2)、(x3, y3),要变换的位置分别为(x1',y1')、(x2', y2')、(x3', y3')、现在,我们要做的就是计算其变换矩阵。假设其变换矩阵为:

注意,在Flash中,其对应的变换矩阵应该是这个(平移变换的位置略有不同)...
Processed in 0.4376036 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号
用户中心
日志分类

最新日志
最新评论
统计信息






友情链接