上海的气温早已经破了零度了,在我还来不及反应的时候,突然发现在回家的路上我已经瑟瑟发抖了。最近一直在忙,却又说不上是什么事,很杂,现在也逐渐改变了以前每天准时下班的习惯,甚至连茶都泡得少了。到了周末,就懒得动了,也出去和朋友们K过两次歌。
上周六去了第三届D2论坛,收获不算很多。印象比较深的只有两场演讲了,第一场是Adobe的7yue关于Flash平台的介绍,我只记得那个令我非常失望的消息了:Adobe并不打算支持视频P2P,只支持文字和消息,而这一点不是因为Adobe没有技术来实现,而是基于商业合作和商业利益的考虑。当时很关心一个问题,就是关于FLV加密解密的问题,因为现在的FLV实在是太容易被盗了,如果能够对FLV文件的编码进行一个简单的加密或者解密,那就很无敌了。可惜现场时间很紧,只让提两个问题,举了几次手也没轮到我。
还一场是Microsoft的王超群先生关于IE8的新特性和Silverlight的介绍,不过在演讲的过程中貌似欠缺一些考虑,有些新功能完全就是其他浏览器(Firefox、Chrome等)的大翻版,还吹嘘得很牛×,现场听众也毫不客气,送了他不少嘘声。不过总的来说,IE8开始完全支持标准,这不能不说是一件非常好的事情,开发者最头疼的莫过于IE6了。另外,IE8自定义了许多新的特性,有些还是很不错的,如果走向标准,那也将是很可怕的事情。Silverlight的下一个版本3也即将支持3D,而且很有可能是WPF中的真3D,并且也将支持显卡硬件加速,并且会支持自定义编解码,并准备找相关公司编写FLV解码包,作为Silverlight的插件,由此可以看出Silverlight全面抢占互联网视频领域的野心。如果Silverlight能支持UDP,那就完全可以实现WEB版的P2P了...
如果你在做flash开发,这个应该是经常碰到的事情:用a.swf加载b.swf,然后需要在b.swf中调用a.swf的方法或者变量。在as2里面实现这个很简单,root就是万能的。在a.swf中,用loadMovie的方法load b.swf到一个MovieClip后,b.swf就可以通过_root或者_parent来访问a.swf中的变量了。不过这招在AS3中已经不灵了,得换个方式。
在as3中,有这样一种方式可以实现:在a.swf中,使用Loader类来load b.swf,在load完成之后,调用b.swf中的一个方法,把a.swf的引用传入或者把相应变量传入给b.swf。一个简单的例子如下:
在a.swf的文档类或者时间轴上这么写:
// 这个是我们要访问的变量
var ab:String = '1234';
// 加载b.swf
var ldr : Loader=new Loader();
ConfigureListeners(ldr.contentLoaderInfo);
ldr.load(new URLRequest("b.swf"));
// ...
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);
// 如果你要在舞台上显示出来
// 可以添加下面的代码...
由于看到这篇文章(Vista 下 Firefox 的细节美化),于是就做了下尝试,结果继续深入,就做了件比较无聊的事情,把Firefox的外观改造得和IE就几乎一样了。你只习惯Vista下IE 7的界面吗?Firefox也可以做到!
下面这个是Firefox:

下面这个是IE 7:

在这里我多用了一个皮肤——Vista Areo(点击这里打开下载页面)。另外,那片美化Firefox的文章中提到的“Compact Menu”插件是不需要的...
2008-11
没注意到MooTools的Cookie类在写的时候自己做了一次encode,在读的时候做了一次decode,在一般的情况下,这个不会有什么问题。但是想一下特殊的情况,如果你在服务器端写Cookie的时候没有encode,那么读的时候是不是会乱掉?当然了,服务器端代码写Cookie一般还是会encode的。但是问题是这样的,如果你要写一个很长的Cookie,中间有很多内容,你先把这些内容那个encode,然后用$作为分隔符把这些项连接起来,再用服务器端代码写入到Cookie里面。好,你现在的Cookie的值可能是这样的:
// 这个cookie的内容有三项,分别为:
// Fdream——decode之后为——Fdream
// http%3A%2F%2Fooboy.net——decode之后为——http://ooboy.net
// %25%25%24%24——decode之后为——%%$$
youkey=Fdream$http%3A%2F%2Fooboy.net$%25%25%24%24
这些是服务器端写进去的,现在我们用MooTools的Cookie类来读,那么返回的内容将是:
youkey=Fdream$http://ooboy.net$%%$$
非常遗憾的是,我们的分隔符$这个时候已经完全被混淆了——最后那两个$不是我们的分隔符...
2008-11
由于仿射变换时,平行的边依然平行,所以,我们无法对一个矩形的位图进行随意变换,比如我们无法拉伸一个角,也无法进行把它变成梯形等。在上文中,我们提到过一种思路,就是把矩形分割成两个三角形,这样变换时从表面上看来就没有什么平行边了,这样我们就可以变换其中的一个或者多个角了。注意,我这里说的是从表面上看,这一点在后面的变换中要进行一定的处理的。
这样我们只需要对三个点进行平面变换,假设我们的三个点分别为(x1, y1)、(x2, y2)、(x3, y3),要变换的位置分别为(x1',y1')、(x2', y2')、(x3', y3')、现在,我们要做的就是计算其变换矩阵。假设其变换矩阵为:

注意,在Flash中,其对应的变换矩阵应该是这个(平移变换的位置略有不同)...
2008-11
在Flash/ActionScript中,只提供了仿射变换功能。仿射变换包括平移(x 和 y 重新定位)、旋转、缩放和倾斜,在进行这些形变时,平行线仍然会保持平行,因此没办法做到任意形变。
实现位图或者MC(MovieClip)的任意形变的一种方式就是把它们分割成三角行,然后对三角形进行相应的仿射变换。比较流行的PV3D(papervision3d)就是采用的这种方式。
一切从简单开始,我们先看看一个点在平面上的几个简单的基本变换。一般来说,我们都将平面上的一个点表示为一个1×2的矩阵,我们可以通过将改点乘以一个2×2的矩阵来对该点进行变换。以下是一些简单的示例:

2008-11
如果你还没有准备好开始这一讲,请参考这一系列的教程,这里是《MooTools 1.2系列教程目录》。
继续我们的“更多”(More)库里面的插件教程,今天我们来学习一下可能是最流行最受欢迎的插件——手风琴。创建和配置一个基本的手风琴很简单,但是你一定要认真看完全文,因为更多的高级选项可能有一些复杂。
基础知识
创建一个新的手风琴
要创建一个新的手风琴,你需要选择一些成对的元素——包含标题和内容。因此,首先,需要给每一个标题和每一个内容块分别指定一个css类名:
<h3 class="togglers">Toggle 1</h3>
<p class="elements">Here is the content of toggle 1</p>
<h3 class="togglers">Toggle 2</h3>
<p class="elements">Here is the content of toggle 2</p>
Processed in 1.9375124 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号
用户中心
日志分类

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






友情链接