flash 8 maelstrom基础教程

作者: egoldy

性质: 翻译

阅读次数: 22009

发表时间: 2005-08-19 03:07:47


声明:本教程译自http://www.nwebb.co.uk,英文版权归原作者所有,如需转载本站中文译稿,请联系本站。


你可能已经听说或是已开始使用flash8 beta player 了,现在来说flash8 ide还为时过早,因为它还没有正式的放出,但我们可以使用它的代码来挖掘一些新的特性,因为我们可以使用flash 7 IDE来导出FLASH8或者你可以使用mtasc编译器导出FLASH8 影片。
话说简短,我们现在就开始:
使用flash 7 ide发布flash 8.
这种教程相信你已在网上已经有很多很多了,你可以参看本站论坛上的贴子,关于使用flash professinal pro 输出 flash 8,兴许现在已经有许多人已经开始使用beta 2版了。
(此部分跳过原作者所写内容)

首先我们先来看两个例子,第一个范例是对位图的控制,使用的是BitmapData类,Maelstrom 真正给了我们对位图每一个像素点的控制,这个例子是展示你对整个图片的控制来重新制造这张图片。

Flash8 bitMap Mixup

下一个例子是动态的blend mode融合模式的应用,就象你在PHOTOSHOP中的应用一样,当然现在adobe已拥有了macromida肯定FLASH 也是需要有的:)

flash 8 Blend Modes.

也许你已经注意到了下面的两个按钮,如果你使用flash 7来观看,他们看起来是平的,这里面它使用了FLASH8的新的滤镜bevel和glow.

如果你很想知道上面两个例子是如何实现的,你可以下载两个源码,你可以从这里下载
      ·BitMaData Mix-Up
         ·Blending Modes
至于它的具体实现方法,留待我们后们的教程具体的研究。

最简单的按钮

让我们先从按钮开始,打开一个新文档
提示:你可以指定滤镜给movieClip,我将展示如何指定bevel滤镜给一个movieClip,通过这个例子,一旦你知道了滤镜的属性,你可以指定任何滤镜给任何的MovieClip.
1.    第一步你需要先创建一个滤镜类的对象,滤镜类都存在一个类包中
如下代码:

var bevel = new flash.filters.BevelFilter(); 

通过上面的代码我们同时可以看出这个类名应为bevelFilter.as, 它存放在filters目录下,filters存放在flash目录下。如果你想使用其它的类,可以使用相似的语法如下:

var someVariableName = new flash.filters.GlowFilter(); 

但现在我们需要的只是bevelFilter类。我们已经将类的引用存在bevel变量中,我们可以通过它来改变属性。Bevel(倒角)滤镜的属性包括”type”,”blurx”,”blurry”,等等.
代码如下:

var bevel = new flash.filters.BevelFilter();
bevel.type = "inner";
bevel.blurX = 4;
bevel.blurY = 4; 

如你所看到的,如果滤镜有很多属性会输入许多空行,这意味着要输入字符,而如很不乐意输入这么字,因些我索性创建一个数组,将它们以值对的形式存储,然后用for-in循环来遍历他们。
我的代码如下:

var bevelProps = {type:"inner", blurX:2, blurY:2};
var bevel = new flash.filters.BevelFilter();
for(var i in bevelProps){ bevel = bevelProps; } 

第一行创建一个匿名对象,元素使用值对的形式,下一部创建一个实例名”bevel”,就象之前我们做的那样,最后用for-in来遍历,来使bevel等于bevelProps;如果不太明白for-in可以查看帮助文档。
现在,在第一次执行时”i”就等于”type”那么bevelProps就等于”inner”,我们也可以说成bevel[“type”]=”inner”;
可能没有人不知beve[“type”]=”inner”实际就是bevel.type=”inner”的不同写法而已J,这种写法是不是会使你的代码更短呢,还省事。

指定滤镜我们使用所有MovieClip,按钮,文本的方法setter,按钮,称为”filter”.在这个例子中”btn”实际上就是指定了OnPress和OnRelease动作的MovieClip,因些它的代码应为:

btn.filters = [glow, bevel]; 

从上面的代码可以看出,我们可以指定多个滤镜给btn.但当前我们只需要一个bevel.所以我们只需要一个如下:

btn.filters = [bevel]; 

现在你可以自已试一下了。
1.    在场景中绘制一个矩形,然后将它转换为movieclip.
2.    将这个movieClip命名为”btn”
3.    在主帧上加入如下代码:

var bevelProps = {type:"inner", blurX:2, blurY:2,
        knockout:false, strength:1,
        quality:100, shadowAlpha:60,
        shadowColor:0, highlightAlpha:1,
        highlightColor:16777215, angle:45,
        distance:2};

var bevel = new flash.filters.BevelFilter();
for(var i in bevelProps){ bevel = bevelProps; }
btn.filters = [bevel]; 

4,现在可以测试一下了,如果你没有flash 8 beta 2,你可以用flash 7 发布预视看一下效果。
演示:

融合模式
融合blend非常简单,打开你所下载的fla文件,代码如下所示:

var modes = ["normal","hardlight","overlay","alpha","invert","subtract","add","difference",
             "darken","lighten","screen","multiply","layer"];
var i = 0;
blender();
//-------------------------------------------|
function pressBtn()
{
    i = (i >= (modes.length-1)) ? 0 : i+1;
    blender();
}
function blender()
{
    picture.blendMode = modes;
    blendModeName.text = "current blend mode: " + picture.blendMode;    
} 

现在我将所有的模式集合在一个数组中,这回我们不需要值对的形式了,当单击时调用函数来执行数组中的每一个元素。

var modes = ["normal","hardlight","overlay",
    "alpha","invert","subtract","add",
    "difference", "darken","lighten",
    "screen","multiply","layer"]; 

其中在按钮上的下面这行代码的写法

i = (i >= (modes.length-1)) ? 0 : i+1; 

等同于

if(i >= modes.length-1)
{
    i = 0;
}else
{
    i+=1;
} 

也就是说当点击按钮时,当到达后一个时,再次点击时就会返回到第一个模式。

总结,flash8在效果上有许多新东西,仿佛又回到了flash4时代探索新东西一样,让人充满了许多幻想,同时也增加了许许多的代码,下一篇我们将深入研究强有力的BitmapData。

 

讨论此教程

服务项目_SERVICE

关于我们

万博思图(北京)信息技术有限公司,专业的flash,flex开发团队,5年经验。公司致力于互联网上的业务的开展,对于互动网站行销,互联网应用程序开发有成熟的解决方案。我们关注互联网市场动态,关注新技术,更注重在新的领域不断探索发现。
万博思图业务内容主要包括企业品牌Flash网站开发,企业形象宣传Flash设计,动画,多媒体演示,Flex企业级应用程序开发,拥有众多成功案例,欢迎来电咨询。
 
COPYRIGHT BY WEBSTUDIO INTERACTIVE DESIGN Co.,Ltd. ALL RIGHTS RESERVED.
公司地址: 北京市朝阳区朝外SOHO D 座727室 邮编: 100026 EMAIL: WEBSTUDIO@WEBSTUDIO.COM.CN
电话: 010-59070059 / 010-86390986-802  手机: 13693660520 传真: 010-59070059-801
京公网安备:110108006741      京ICP备08002333号-4
王先生