以下是 Flash Lite 2.0 支持的新功能.
1,支持 ActionScript 2.0
该和Flash 4的AS语法(tellTarget)说再见了,现可用流行的点语法和OOP方法编程.
2,视频回放
Flash Lite 2 的视频回放是基于手机自身的视频渲染程序
就是说只要是手机支持的视频格式(3gp,mpg),就都可以在Flash中播放,这点比PC上更好.
3,解析外部XML
可使用Flash 7(MX2004)的XML对象,访问和解析外部XML文件.
4,本地数据访问
可以在手机上保存文件了,即使用本地共享对象(SharedObject)
5,载入外部图片和声音
从本地或网络上载入图片和声音文件(JPEG,MP3)
6,动态文本支持中文了(7yue 补充).
Flash Lite Player 2 启动要花掉 750k 到1M 系统内存
为了达到最佳性能表现,官方建议大家在运行FL2时,尽量少运行过多其他的应用程序.
像较早推出的一些Nokia智能手机,由于硬件配置低,已经和Flash Lite 2无缘了
按本文截至日期,目前支持 Flash Lite 2.0 的手机型号如下:
Nokia 3230
Nokia 6260
Nokia 6620
Nokia 6630
Nokia 6670
Nokia 6680
Nokia 6681
Nokia 6682
Nokia 7610
Nokia N70
Nokia N90
支持 Flash Lite 1.0 和 1.1 的设备如下:
http://www.macromedia.com/mobile/supported_devices/handsets.html
以下是 Flash Lite 2.0 还不支持的功能:
1,XMLSocket
2,Flash Media Server(Flash COM,FCS,FMS)通讯
3,远程共享对象 (Remote shared objects)
4,播放自己的视频格式(FLV)
5,AMF(Flash Remoting)
6,层叠样式表(CSS)
7,设备字体蒙罩
8,高质渲染圆滑的位图
在过去的一年里,对于开发人员来说使用flash与javascript通讯总会碰到一些麻烦的事情,从flash调用javascript函数已经没有什么问题了,因为我们可以使用getURL方法来直接调用,但是要想使用javascript返回flash在许多浏览器上几乎是不可能的。但是现在可以了。
Flash8的出现,这件事就变的比较容易了。J
The ExternalInterface API
之前我们使用flash调用javascript函数,一般使用这样的方法:
代码:
getURL(“javascript:alert(‘hello webstudio.com.cn’);”);
但是使用这种方法从flash调用javascript函数仍存在许多困难。特别是在处理多个javascript函数调用问题上。ExternalInterface
API可以与javascript实现无缝调用,并且它的能力达到可以在flash时间线使用。
在我们正式进入它的使用方法之前,我们需要确保在flash时间上可用,就要导入它的类向这样:
代码:
import flash.external.*;
现在它已经允许我们做的第一件事就是可以调用javascript函数了。
Call 调用方法
call方法对于ExternalInterface对象来说是一个静态方法,也就是说我们不需要使用ExternalInterface对象的实例来调用方法,我们可以直接通过对象类来调用,向这样:
代码:
ExternalInterface.call(functionName:String,Parameters);
这个方法有两个参数:
· functionName – 你想要调用的javascript函数名要以字符串的形式
· Parameters – 需要传递给javascript函数的参数,用逗号分开,是可选的。
...
完整阅读本文...]]>
(完)
输出后都是undefined
也就是说都没有被调用这个处理方法,但是用onClipEvent(data){}是可以trace的,也就是说问题已经解决了。
可是问题又来了,如果在类里我们怎么办呢,就只能用MovieClip.onData了。但是又不能调用,和jiagao讨论了一下,他也遇到了相同的问题。
想了一下,琢磨了一个简单的变态方法。方法如下 :
var pages = this.mc.createEmptyMovieClip("pages",0);
pages._x = 2;
pages.onLoad = function(){
trace(this._width);
}
pages.onEnterFrame = function(){
if(this.onLoad!=undefined&&this.onData!=undefined){
trace(pages.onLoad);
trace(pages.onData);
delete this.onEnterFrame;
}
trace(111);
}
pages.onData = function(){
trace(this._width);
}这样就没问题了,如果你不嫌麻烦的话就写一个extends MovieClip也可以。
(完)
//首先我们要导入EventDispatcher
import mx.events.EventDispatcher;
class testEvent extends MovieClip{
function testEvent(){
//在构造函数中初始化
EventDispatcher.initialize(this);
}
//定义这三个方法
function dispatchEvent(){}
function addEventListener(){}
function removeEventListener(){}
function sendOK(){
//定义事件onSend
var eventObj1:Object = {target:this,type:"onSend"};
dispatchEvent(eventObj1);
trace("OK");
//定义事件onComplete
var eventObj2:Object = {target:this,type:"onComplete"};
dispatchEvent(eventObj2);
}
}
怎么用我们的事件呢?往下看!
新建一个FLA,输入以下代码:
大家还记得UI组建的事件处理函数么,对这个和UI组建的差不多,都是addEventListener和removoeEventListener。
var testObj:testEvent = new testEvent();
var eventObj1:Object = new Object();
eventObj1.onSend = function(obj){
trace("type:"+obj.type);
}
var eventObj2:Object = new Object();
eventObj2.onComplete = function(obj){
trace("type:"+obj.type);
}
testObj.addEventListener("onSend",eventObj1);
testObj.addEventListener("onComplete",eventObj2);
testObj.sendOK();
ok!去定义你的事件吧。
问题:创建两个位置大小颜色各不同的可拖拽的矩形。
方法一:method1.fla
//ActionScript 1.0
//Flash Player 6(含)以上
//ActionScript 1.0或ActionScript 2.0均可
createEmptyMovieClip ("rectangle1_mc", 1);
rectangle1_mc._x = 10;
rectangle1_mc._y = 10;
with (rectangle1_mc) {
beginFill (0xff0000, 100);
moveTo (0, 0);
lineTo (200, 0);
lineTo (200, 200);
lineTo (0, 200);
endFill ();
}
rectangle1_mc.onPress = startDrag;
rectangle1_mc.onRelease = rectangle1_mc.onReleaseOutside = stopDrag;
//
createEmptyMovieClip ("rectangle2_mc", 2);
rectangle2_mc._x = 50;
rectangle2_mc._y = 50;
with (rectangle2_mc) {
beginFill (0xffcc00, 100);
moveTo (0, 0);
lineTo (400, 0);
lineTo (400, 100);
lineTo (0, 100);
endFill ();
}
rectangle2_mc.onPress = startDrag;
rectangle2_mc.onRelease = rectangle2_mc.onReleaseOutside = stopDrag;方法二:method2.fla
//ActionScript 2.0
//Flash Player 6(含)以上
//必须为ActionScript 2.0
var rect1:Rectangle = new Rectangle (this, 10, 10, 200, 200, 0xff0000, 1);
var rect2:Rectangle = new Rectangle (this, 50, 50, 400, 100, 0xffcc00, 2);
delete rect1;
delete rect2;
delete Rectangle;
此方法必须得有一个Rectangle.as与之同路径。Rectangle.as内容如下:
class Rectangle extends MovieClip {
private var rectangle_mc:MovieClip;
public function Rectangle (target:Movi...
完整阅读本文...]]>
做好的成品如下:大家可以用鼠标将上面的图像碎片拖到下面的方框内的合适位置,为方便大家找位,游戏给出了有一定透明度的原图作为参考。大家可以发现这个游戏还设计了一个“吸附”功能,能够让你将拼图片轻松地整齐排列,同时游戏还会自动判断拼图是否全部正确完成。
制作步骤:
第一步:图片的准备工作
既然是拼图,当然首先就要有图片了,我找到的是一幅320*240象素的jpg图片,通过Fireworks将其切割成12块(每块80*80px),然后分别保存成12个jpg小图片备用,名称最好有一定规律,比如我将他们分别命名为pic1~pic12,当然你也可以利用其他图象处理工具来实现这一步。
第二步:建立Flash文件
打开今天的主角――Flash,通过菜单Modify Document...或Ctrl+J打开Document Properties面板(由于盗匪使用的是Flash
MX,一些快捷键可能与Flash 5的有所不同,不过盗匪会尽量给出Flash 5中相应的快捷键的,这个在Flash 5中的快捷键是Ctrl+M),将画面大小改为400*600px,其他可以保持默认值。
第三...
完整阅读本文...]]>
代码:
// create textfield
this.createTextField("txtField", this.getNextHighestDepth(), 10, 10, 300, 100);
txtField.html = true;
txtField.htmlText = "<font size='60'>Hello World!</font>";
txtField.textColor = 0x0055CC;
// set new antialias mode
txtField.antiAliasType = flash.text.TextRenderer.AntiAliasType.ADVANCED;
// create shadow filter
var dropShadow = new flash.filters.DropShadowFilter();
dropShadow.blurX = 5;
dropShadow.blurY = 5;
dropShadow.distance = 3;
dropShadow.angle = 35;
dropShadow.quality = 2;
dropShadow.alpha = 0.5;
// apply shadow filter
txtField.filters = [dropShadow];
7。按下ctrl+shift+f12,找开发布设置
完整阅读本文...]]>
今天的例子是最为简单的一个得到象素并复制到一个新对象中的操作,不过有了这个功能,位图操作的可能性就无限量了。
Flash代码:
import flash.display.*;
import flash.geom.*;
//导入本例所需要的二个Pageage
var sourceBD:BitmapData = BitmapData.loadBitmap(”mypic”);
//创建bitmapData对象以用于存放源图片,源图已在库中并命名为mypic
var mc:MovieClip = this.createEmptyMovieClip(”mc”, this.getNextHighestDepth());
mc._x = 25;
mc._y = 100;
mc.attachBitmap(sourceBD,mc.getNextHighestDepth());
//在Stage上创建空MC,并使用MC的attachBitmap方法将刚才创建的bitmapData对象读取到这个MC中
var targetBD:BitmapData = new BitmapData(230, 230, false, 111111);
//创建另一个bitmapData对象作为复制目标
var mc2:MovieClip = this.createEmptyMovieClip(”mc”, this.getNextHighestDepth());
mc2._x = 290;
mc2._y = 100;
mc2.attachBitmap(targetBD,mc.getNextHighestDepth());
//同样在Stage上创建空MC用于存放复制目标
mc.onRollOver = function() {
//当鼠标移动到拥有源图的MC上时,开始CopyPixels
copyPixels();
};
完整阅读本文...]]>
打开Flash 8,在Stage中导入要操作的图片,并为MC其命名为myPic_mc;
在第一帧上使用以下代码:
import flash.filters.BlurFilter;
//导入BlurFilter 的package
var myBlurfilter:BlurFilter = new BlurFilter(60, 60, 1);
/*
建立flash.filters.BlurFilter的实例,使用方法为
var myInstanceName: BlurFilter= new BlurFilter(blurX:Number, blurY:Number,
quality:Number);
blurX和blurY模糊值分别指的是画面横向和纵向的模糊强度,范围从1~100;
quality指的是模糊渲染的质量,范围从1~15,默认值为1质量较低,2质量居中,当为3时
质量接近Photoshop中的高斯模糊(Gaussian
blur),已属较高质量,在大多数应用当中使用1~3的值即可,太高将影响运算效率。
*/
var filterArray:Array = new Array();
filterArray.push(myBlurfilter);
//向filterArray数组新增一个滤镜对象
myPic_mc.filters = filterArray;
/*
在新版Flash 8中,movieClip Class已经增加新的方法filters用于应用滤镜对象,但
filters方法不直接接收滤镜对象,必须先将滤镜对象装入一个对象数组,再应用
于MovieClip,当然,装入对象数组后的滤镜对象也可以通过数组直接修改滤镜对象的属性,例如:
filterArray[0].blurX=10;
filterArra...
完整阅读本文...]]>