Flash与Flex3结合学习心得体会(推荐)
Webjx核心提示:今天折腾了大半天Flash与Flex3的配合,特总结一下心得体会.
今天折腾了大半天Flash与Flex3的配合,特总结一下心得体会:
1) 如果是通过Embed来嵌入swf的话,Flex3只支持FlashCS2所创建的swf.
2) 如果是通过loader来加载的话,只有AS3的swf才能在加载后被控制(这和第一点相反,我花了很长时间才弄明发现这两点,汗!)
3) 如果要直接加载到Flex当中,类必须继承UIComponent,这好比在Flash中必须继承DisplayObject
4) 如果要把Flash的组建打包给Flex使用,应该使用FlexComponentKit,把MC导出成swc。然后在Flex中把swc配置到Library Path后,对应的组建就可以作为一等公明在Flex中使用了。如果MC是绑定了类的,那么对应类继承UIComponent就可以了。
在googleDocs下了一个corelib包,不是蛮实用的(前段时间还自己写trim,浪费时间啊),E文看得累,以备以后查看
//图相用法
import com.adobe.images.JPGEncoder;
public function submit():void {
var encoder:JPGEncoder = new JPGEncoder(80);
var bytes:ByteArray = encoder.encode(getBitmapData());
var request:URLRequest = new URLRequest(UPLOAD_PAGE);
//data值就为图片编码数据ByteArray;
request.data = bytes;
request.method = URLRequestMethod.POST;
//这个是关键,内容类型必须是下面文件流形式;
request.contentType = “application/octet-stream”;
var loader:URLLoader = new URLLoader();
loader.load(request);
}
//加密用法
import com.adobe.crypto.SHA1;
trace(SHA1.hash(”132″));
//utils包比较繁锁,全都是静态方法
import com.adobe.utils.ArrayUtil;
ArrayUtil.arrayContainsValue(arr, value);//arr是否包含value
ArrayUtil.arraysAreEqual(arr1, arr2);//arr1,arr2是否相等
ArrayUtil.copyArray(a);//深拷贝
ArrayUtil.removeValueFromArray(arr, value);//删除值value
import com.adobe.utils.StringUtil;
StringUtil.beginsWith(str1, str2);//str1是否以str2开头
StringUtil.endsWith(str1, str2);//str1是否以str2结束
StringUtil.ltrim(str);//去左空格
StringUtil.rtrim();
StringUtil.trim();
StringUtil.remove(str1, str2);//从str1删除str2
StringUtil.replace(input, replace, replaceWith);//把input中的replace置换为replaceWith
StringUtil.stringsAreEqual(s1, s2, caseSensitive);//s1,s2是否相等,caseSensitive是否大小写敏感
import com.adobe.utils.DateUtil;
DateUtil.compareDates(d1, d2);//比较,d1>d2返回-1,=返回0,<返回1
DateUtil.getAMPM(d);//返回AM or PM
….功能比较全, 太多了, 还有几个不知道
import com.adobe.utils.NumberFormatter;
NumberFormatter.addLeadingZero(5);//返回补0的数,如1变成01
import com.adobe.utils.IntUtil;
IntUtil.toHex(n,bigEndian);//16进制,bigEndian指定是后补0,还是前补0
IntUtil.rol(n, m);//n右移m位(位运算)
IntUtil.ror(n, m);//左移
import com.adobe.utils.DictionaryUtil;
DictionaryUtil.getKeys(d);//得到键名
DictionaryUtil.getValues(d);//得到值
import com.adobe.utils.XMLUtil;
这个还不会用,以后慢慢摸,本来AS3的XML就很完善了
corelib包下载地址
Flash跨域调用问题
由于安全沙箱的限制, 处于不同域下的文件(swf, xml等)在默认状态下是不能相互调用的. 比如A域名下的flash不能访问B域名下的XML. 除非B域名在根目录下的”crossdomain.xml”文档中包含A域名. 但存在以下问题:
1) 不允许改动根目录
解决方法: 在AS3允许crossdomain.xml不在根目录中,这时就要用Security.loadPolicyFile(”http://www.example.com/sub/dir/pf.xml”);这样的方法来指定. 当然只有crossdomain.xml所在目录是可以访问的.
2) 不允许添加crossdomain.xml
解决方法: 如果要被读取的是swf文件, 只要在主函数中加入flash.system.Security.allDomain(”A”)即可. 但如果是其他各式的文件, 比如xml文档的话怎么办呢? 可以把xml读取到B上的b.swf(b上加入flash.system.Security.allDomain(”A”)). 然后在A的a.swf中加载b.swf,然后读取b.swf中的xml. 类似于:
_mc =event.target.content as Sprite;
trace(_mc["var"]);
Loader与URLLoader的比较
AS3已经中Loader与URLLoader是两个比较容易混淆的类,特此区分:
应用范围
Loader: swf,图片(jpg,png,gif)
URLLoader:文本文件(xml,php,jsp…)
使用方法
Loader:
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
private function loadComplete(event:Event)
{ trace("done");addChild(loader);}
URLLoader:
xmlLoader.dataFormat=URLLoaderDataFormat.TEXT;
xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded);
private function xmlLoaded(event:Event)
{
try {myXML = XML(event.target.data);area.text=myXML;}
catch (e:TypeError) {area.text="Load faild:\n"+e.message;}
}
AS3-点阵化文字
上面是这两天做的一个小东西,它能够把输入的文字用点阵来描述,并存这些信息存入一个数组当中。然后用这个数组来重新生成“文字”,这些“文字”可以由任意的Sprite组成,并且可以随意加上动画。
承蒙大家厚爱,把源文件放在这里供大家下载。为了便于将来扩展,我使用的是Observer设计模式,希望不会把大家搞混淆。
源文件下载
Javascript与Flash互动
在SwfObject解决Html与Flash之间传递参数问题中已经简要介绍了如何使用SwfObject在页面中插入Flash,如何在初始时由JS向Flash传递参数,以及运行时Flash如何调用JavaScript中函数。这里主要介绍运行时JavaScript如何互相传递参数, 并控制Flash的播放。
源文件下载
其实JS能直接控制Flash的播放,主要通过下列方法实现:
Play() —————————————- 播放动画
StopPlay()————————————停止动画
IsPlaying()———————————– 动画是否正在播放
GotoFrame(frame_number)—————- 跳转到某帧
TotalFrames()——————————- 获取动画总帧数
CurrentFrame()——————————回传当前动画所在帧数-1
Rewind()————————————-使动画返回第一帧
SetZoomRect(left,top,right,buttom)——-放大指定区域
Zoom(percent)——————————改变动画大小
Pan(x_position,y_position,unit)————使动画在x,y方向上平移
PercentLoaded()—————————-返回动画被载入的百分比
LoadMovie(level_number,path)———– 加载动画
TGotoFrame(movie_clip,frame_number)- movie_clip跳转到指定帧数
TGotoLabel(movie_clip,label_name)—— movie_clip跳转到指定标签
TCurrentFrame(movie_clip)————— 回传movie_clip当前帧-1
TCurrentLabel(movie_clip)—————–回传movie_clip当前标签
TPlay(movie_clip)—————————播放movie_clip
- Flash与Flex3结合学习心得体会(推荐)
- › FlashAS3.0实例教程:喷泉动画特效
- › Flash教程:片头加载loading的制作方法
- › 将FlashVars写在JS函数中,实现变量更新与后台同步(推荐)
- › Flash教程:制作卡片翻转动态效果
- › Flash CS3仿真艺术设计教程:封套工具的变形
- › Flash CS3仿真艺术设计教程:封套工具的应用
- › Flash教程:AS制作加载外部.swf影片的视频播放器
- › Flash cs3仿真艺术设计1.15:全新的Flash界面
- › Flash技巧:组合技巧制作吸引人的动画0
- › Flash实例教程:飞机阴影跟随飞机飞翔5
- › Flash AS教程:propertydata问题解决
- › Flash动画制作技巧:动物行走动画制作揭秘
- 在百度中搜索相关文章:Flash与Flex3结合学习心得体会(推荐)
- 在谷歌中搜索相关文章:Flash与Flex3结合学习心得体会(推荐)
- 在soso中搜索相关文章:Flash与Flex3结合学习心得体会(推荐)
- 在搜狗中搜索相关文章:Flash与Flex3结合学习心得体会(推荐)
- tag: Flash教程,flash教程制作,flash动画教程,flash教程下载,平面设计教程 - Flash教程