• http://www.rocksolidarcade.com/games/robokill/mochi/

    Tag:
  • 作者:闪刀浪子 【作者的这个比喻很形象啊 呵呵 收藏了】

    原文地址 :http://hi.baidu.com/mr_ziqiang/blog/item/257a474e45c51f0fb3de05b7.html

    AS3.0中使用Socket接收数据我们必须使用ProgressEvent.SOCKET_DATA事件。这个事件在帮助文档中是这样描述的 ——在套接字接收到数据后调度。对于很多熟悉AS3 的人来说通常会有一种误解,认为这个事件是接收一次产生一次。服务器发送了10次,那么就会有10次ProgressEvent.SOCKET_DATA 产生。

    而事实却并非如此,我和同事做过一次尝试,服务器发送了20000次数据而rogressEvent.SOCKET_DATA事件只产生了2000多次。

    这是为什么?我感觉SOCKET_DATA事件有点像一个计时器,按照一定频率检查SOCKET中是否有数据,如果有则产生一次事件。当然这只是我的一种猜测,没有在官方文档中找到这个说明。

    对于AS3.0 Socket的理解,我觉得可以用一个啤酒桶来比喻。

    它是一个容器,从服务器接收的数据都会按照先后顺序放在这个容器中。这个容器有自己最大的容量(没有具体测过容量),同时也有当前的容量 (Socket.bytesAvailable)。当我们从socket中读取一个数据时就好像打开啤酒桶下方的水龙头倒出一杯啤 酒,Socket.bytesAvailable会减少。当数据读完之后,Socket.bytesAvailable也就变为0。

    Tag:
  • 作者:闪刀浪子 http://www.iflashigame.com http://hi.baidu.com/mr_ziqiang

    想利用ria来生成swf,可以当看过swf文件规范之后感觉这样做似乎过于复杂了。以前衰人给过一个使用Flash CS3 IDE的扩展来制作的方式,没有怎么深入去看。周末仔细研究了一番,感觉走了弯路了。JSFL已经可以通过很简单的代码来处理所有素材包的制作了,何必非要去做个另类的生成工具。

    JSFL使用起来很简单,而且调试很方便。IDE里面的历史面板可以把你每一步操作使用的JSFL源码都告诉你。第一次使用你可能需要了解他的这个DOM结构,语法是js语法,即使你没有任何js基础,但是有AS基础就够用了。

    1、当前打开的文档用fl.getDocument()取得,他是一个Document对象。

    2、fl.getDocument().library 取得当前文档库的引用,做素材的话这个是最常用到的了。库面板上可以进行的操作,你都可以用API来做,看一下帮助文档就了解了,并不复杂。

    3、fl.getDocumentDOM().getTimeline() 来访问当前文档的时间轴。此方法返回当前正在编辑的场景或元件的时间轴。也就是你当前正在操作哪个时间轴,显示的就是哪个时间轴。

    4、时间轴上又分了层layer,每一个层又有不同的帧frame。程序可以取得任何的时间轴上面的层和帧的内容。

    5、有的时候操作某个东西需要把他变成选择状态。场景中正在编辑的东西的选取可以通过坐标来操作,相当于你在某个坐标点了一下,那么这一点下最上层的物体就被选中了。

    6、JSFL一般存储在C:\Documents and Settings\Samsung\Local Settings\Application Data\Adobe\Flash CS3\zh_cn\Configuration 里面(这个会不一样,到你的用户名下找一下,这里我的用户名是Samsung),一般你放到这个目录下的command目录里面,那么就可以在你的 Flash CS3 IDE的菜单-》命令中找到。

    如果想多了解多一点他的用法,可以参考这个的帖子。http://bbs.actionscript3.cn/viewthread.php?tid=19760&highlight=jsfl

    说了一堆,简单看一个例子就明白了。

     

    开始制作之前我们先大致确定一下我们的需求:

    1、我们需要把每一位图都变成一个MC,同时把这个MC作为一个导出类来用

    2、每一个位图都有一个唯一的导出类名。

    3、所有的位图变成MC之后都是左上角作为原点。

    4、处理完的位图和MC都在库里面分目录存放,资源的种类作为目录。

    5、位图的文件名中记录了种类、名称和导出类名。(本例中的位图命名规则为:种类_名称_导出类名.png)

    最后使用的JSFL代码如下。

    JavaScript语言: Codee#6631
    fl.getDocumentDOM().selectAll();//选中场景中所有的位图
    if(fl.getDocumentDOM().selection.length>0)
    {
    fl.getDocumentDOM().deleteSelection();//删除所有位图
    }
    var lib=fl.getDocumentDOM().library;//取得库
    var libLength=lib.items.length;//库元素的长度
    var bitmapArr=new Array();//库里面没有处理的位图
    for(var i=0;i<libLength;i++)
    {
    //没有在目录中的位图则表示没有处理
    if((lib.items[i].itemType=="bitmap")&&((lib.items[i].name).indexOf("/")==-1))
    {
       bitmapArr.push(lib.items[i].name);
    }
    }
    if(bitmapArr.length>0)
    {
    //创建目录
    for(var i=0;i<bitmapArr.length;i++)
    {
       var name=bitmapArr[i];//位图的完整名称
       var nameArr=bitmapArr[i].split("_");//位图名称的拆分数组
       var folder=nameArr[0];//目录名称
       var iconName=nameArr[1];//图标名称
       var code=nameArr[2].split(".")[0];//图标编码
       lib.newFolder(folder);
       lib.selectItem(name);//选中位图
       lib.addItemToDocument({x:0, y:0});//添加到场景
       fl.getDocumentDOM().selectAll();
       var mcName=iconName+"_"+code;
       //转换为mc
       fl.getDocumentDOM().convertToSymbol("movie clip",mcName,"top left") ;
       if (lib.getItemProperty('linkageImportForRS') == true) {
       lib.setItemProperty('linkageImportForRS', false);
       }
       lib.setItemProperty('linkageExportForAS', true);
       lib.setItemProperty('linkageExportForRS', false);
       lib.setItemProperty('linkageExportInFirstFrame', true);
       lib.setItemProperty('linkageClassName', code);
       lib.setItemProperty('scalingGrid', false);
       fl.getDocumentDOM().selectAll();//选中场景中所有的位图
       fl.getDocumentDOM().deleteSelection();//删除所有位图
       var bitmapFolder=folder+"/图素";
       var mcFolder=folder+"/导出类"
       lib.newFolder(bitmapFolder);
       lib.newFolder(mcFolder);
       lib.moveToFolder(mcFolder, mcName);
       lib.moveToFolder(bitmapFolder, name);
    }
    }
    else
    {
    alert("没有需要处理的位图!");
    }

     

    完整例子在这里下载:jsfl制作swf素材包的例子。

    Tag:
  • 【转载】http://www.actionscript3.cn/magicianzrh/archives/2008/11/flexflash_library.html
    先把代码包放上来

    FlexLoadFlashLibResource.zip

    其实flex加载外部图片有很多办法,比较爽的就是Embed标签嵌入,不过数量多了也是相当麻烦

    这阵子做点东西,因为资源太多,特别有规则的如果利用BitmapData切图的办法会浪费很多运算,只好在Java中把图片切好,还好,虽然 Java有段时间没有去写过,前阵子在用Python,本来也想Python搞定--多爽,哎,历史遗留问题,Java实在太臃肿了

    我 的一般流程都是:photoshop大图搞定,之后Python按规则分图转格式(ActionScript3的ByteArray实在虽然也可以,但无 奈效率),之后可以用JSFL工具在flash中整理资源(可惜JSFL也太弱了点),之后就是这次要做的把flash中的资源弄出来了

    搞这个真是郁闷,一项流程都不能用一种语言方便的搞定,不然哪里要这么多步骤

    demo包中fla中有这次的flash资源文件,flash文件已经运行过ResourceLib.jsfl,如果你想尝试,只要重新建立一个 fla,把as3_logo.gif导入到flash库中,之后运行ResourceLib.jsfl(这个在Command->Run Command中,选择ResourceLib.jsfl),你可以看到库面板中的as3_logo.gif已经相应的设置好了,关于JSFL,以前写过 一个让JSFL帮你做些苦力活,对了,记得设置文档类为ResourceLib.as,之后编译下就是src中的ResourceLib.swf了

    ActionScript 3语言: Codee#6630
    <!--
    @author:magicianzrh http://www.actionscript3.cn/magicianzrh
    load the resource in fla file library demo
    -->
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
    creationComplete="myInit();">
    <mx:Script>
      <![CDATA[
       private var myLoader:Loader;
       private var resClass:Class;
      
       private function myInit():void {
        myLoader = new Loader();
        myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadedHandler);
        myLoader.load(new URLRequest("ResourceLib.swf"));
       }
      
       private function loadedHandler(event:Event):void {
        resClass = myLoader.contentLoaderInfo.applicationDomain.getDefinition("ResourceLib") as Class;
        var imageClass:Class = new resClass().getImage("as3_logo") as Class;
        base.source = new Bitmap(new imageClass(287,101));
       }
      ]]>
    </mx:Script>
    <mx:Image x="0" y="0" id="base" scaleContent="true"/>
    </mx:Application>

    就搞定啦

    记得类imageClass参数要设置宽度和高度,这是因为在flash库中图片设置为Export for ActionScript时候,图片的基类是BitmapData

    其他就没啥啦

    太久没有更新blog了,这段时间,边写java边写ActionScript3,脑子都有点乱,不过已经过去啦,O(∩_∩)O哈哈~欢呼

    Good Luck & Have Fun!

    Tag:
  • 【转载】 http://flash.9ria.com/viewthread.php?tid=19760&highlight=jsfl

    jsfl 确却的说就是Adobe Flash JavaScript API
    我们在flash里的可视化编程基本由这些接口完成。
    功能很强大,只要你熟悉了它,你就可以自己扩展flash ide给他添加工具面板,创作自己的工具,新建一些命令处理来完成自己想处理的事情等。
    形象点说,你如果用过早期的pv3d的话一定不会对那是pv3d的组件陌生的。其实pv3d的组件在创作中也运用到了jsfl 脚本去实现了很多在flash ide里的窗口功能
    或者说你如果用过asv5或者asv6这款破解软件的话,不知道你是否知道,他的还原原理其实就是生成堆jsfl文件脚本文件来还原fla文件,对,或者应该说创建比较合适。可以这么说,任何你能手动在flash操作的步骤都可以用jsfl脚本来是实现。

    好了下边先让大家认识先jsfl的类库吧;
    jsfl类库里提供了接近50个对象跟接近20个顶级方法。具体的你可以打开flash帮助的flash扩展一章。里边有详细的解说

    全局方法
    可从任何 JavaScript API 脚本调用以下方法:

    alert()
    confirm()
    prompt()


    时间轴特效
    下列函数专用于时间轴特效:

    configureEffect()
    executeEffect()
    removeEffect()


    可扩展工具
    在创建可扩展工具的脚本中,可调用以下函数:

    activate()
    configureTool()
    deactivate()
    keyDown()
    keyUp()
    mouseDoubleClick()
    mouseDown()
    mouseMove()
    mouseUp()
    notifySettingsChanged()
    setCursor()

    对象
    描述

    actionsPanel 对象
    actionsPanel 对象表示当前显示的"动作"面板。

    BitmapInstance 对象
    BitmapInstance 对象是 Instance 对象的子类,它表示帧中的一个位图

    BitmapItem 对象
    一个 BitmapItem 对象是文档库中的一个位图。BitmapItem 对象是 Item 对象的子类。

    CompiledClipInstance 对象
    CompiledClipInstance 对象是 Instance 对象的子类。

    compilerErrors 对象
    compilerErrors 对象表示"编译器错误"面板,它是 flash 对象 (fl) 的一个属性,可以通过 fl.compilerErrors 访问。

    ComponentInstance 对象
    ComponentInstance 对象是 SymbolInstance 对象的子类,表示帧中的一个组件。

    componentsPanel 对象
    componentsPanel 对象表示"组件"面板,它是 flash 对象 (fl) 的一个属性,可以通过 fl.componentsPanel 访问。

    Contour 对象
    Contour 对象表示由形状边界上的半边缘组成的封闭路径。

    Document 对象
    Document 对象表示舞台。

    drawingLayer 对象
    drawingLayer 对象可以从 JavaScript 作为 flash 对象的子对象访问。

    Edge 对象
    Edge 对象表示舞台上一个形状的边缘。

    Effect 对象
    Effect 对象表示时间轴特效的一个实例。

    Element 对象
    出现在舞台上的所有对象都是 Element 类型。

    Fill 对象
    Fill 对象包含"工具"面板或某一选定形状的填充颜色设置的所有属性。

    Filter 对象
    Filter 对象包含有所有滤镜的全部属性。

    flash 对象 (fl)
    flash 对象表示 Flash 应用程序

    FLfile 对象
    FLfile 对象允许您编写可对本地文件系统中的文件和文件夹进行访问、修改和删除的 Flash 扩展。

    folderItem 对象
    folderItem 对象是 Item 对象的子类。

    fontItem 对象
    fontItem 对象是 Item 对象的子类。

    Frame 对象
    Frame 对象表示图层中的帧。

    HalfEdge 对象
    Shape 对象的边缘的有向侧。

    Instance 对象
    Instance 对象是 Element 对象的子类。

    Item 对象
    Item 对象是一种抽象基类。

    Layer 对象
    Layer 对象表示时间轴中的图层。

    library 对象
    library 对象表示"库"面板。

    Math 对象
    Math 对象可用作 flash 对象的只读属性;请参阅 fl.Math。

    Matrix 对象
    Matrix 对象表示一个变形矩阵。

    outputPanel 对象
    outputPanel 对象表示"输出"面板,它用来显示语法错误等疑难解答信息。

    Oval 对象
    Oval 对象是使用椭圆工具绘制的形状。若要确定一个项目是否为 Rectangle 对象,请使用 shape.isOvalObject。

    Parameter 对象
    从 screen.parameters 数组(对应于 Flash 创作工具中的屏幕"属性"检查器)或者通过 componentInstance.parameters 数组(对应于创作工具中的组件"属性"检查器)来访问 Parameter 对象类型。

    Path 对象
    Path 对象定义线段(直线、曲线或两者)的序列,通常在创建可扩展工具时使用。

    Project 对象
    Project 对象表示一个 Flash 项目 (FLP) 文件。

    ProjectItem 对象
    ProjectItem 对象表示一个已添加到项目中的项(磁盘上的文件)。

    Rectangle 对象
    Rectangle 对象是使用"矩形"工具绘制的形状。若要确定一个项目是否为 Rectangle 对象,请使用 shape.isRectangleObject。

    Screen 对象
    Screen 对象表示幻灯片或表单文档中的单个屏幕。

    ScreenOutline 对象
    ScreenOutline 对象表示幻灯片或表单文档中的一组屏幕。

    Shape 对象
    Shape 对象是 Element 对象的子类。当在舞台上操作或创建几何形状时,Shape 对象提供的控制比绘图 API 提供的控制更精确。

    SoundItem 对象
    SoundItem 对象是 Item 对象的子类。它表示一个用于创建声音的库项目。

    Stroke 对象
    Stroke 对象包含笔触的所有设置(包括自定义设置)。

    SymbolInstance 对象
    SymbolInstance 对象是 Instance 对象的子类,它表示帧中的一个元件。

    SymbolItem 对象
    SymbolItem 对象是 Item 对象的子类。

    Text 对象
    Text 对象表示文档中单独的文本项。

    TextAttrs 对象
    TextAttrs 对象包含能应用于部分选定的文本的所有属性。此对象是 Text 对象的子类。

    TextRun 对象
    TextRun 对象表示一串字符,其属性与 TextAttrs 对象中的所有属性相匹配。

    Timeline 对象
    Timeline 对象表示 Flash 时间轴,可通过 fl.getDocumentDOM().getTimeline() 访问当前文档的时间轴。

    ToolObj 对象
    一个 ToolObj 对象表示"工具"面板中的单个工具。

    Tools 对象
    可从 Flash 对象 (fl.tools) 访问 Tools 对象。

    Vertex 对象
    Vertex 对象是形状数据结构中保存坐标数据的部分。

    VideoItem 对象
    VideoItem 对象是 Item 对象的子类。

    XMLUI 对象
    XMLUI 对象能够获取和设置 XMLUI 对话框的属性,并能接受或取消其中的某个功能。

    一般的说我们常用到的作对象一般为 flash 对象 (fl),Frame 对象,Layer 对象,Instance 对象,library 对象,Item 对象,outputPanel 对象等


    先来个hello word  吧  jsfl中输出的方法有2个 fl.trace() 跟 outputPanel.trace() ;
    步骤1:
    新建一个 jsfl文件 然后 往里边写

    1. fl.trace('hello jsfl !')
    复制代码

    步骤2:
    看到flash上方有一个绿色的箭头没有,没错,按下它就会执行了。
    要清除输出内容我们要用到对象的一个方法 clear();

    1. outputPanel.clear()
    复制代码

    因为我们是扩展flash所以我们还可以或者直接输出的内容保存到本地
    可以这样做;
    outputPanel.save('file:///c:log.txt')
    我们可以选择吧jsfl文件保存为命令,方便以后我们在命令菜单里调用,按crtl+s默认保存路径就可以了,当然我们也可以自己写包,但那样的话我们还需要用到
    高级点的编程技巧,像fl.runScript()
    fl.runScript("file:///C|/testScript.jsfl", "testFunct", 10, 1);
    执行c盘目录下的testScript.jsfl脚本的testFunct方法并把参数传递过去;

    还有一个高级编程里经常用到的方法MMexecute()
    MMExecute("Flash JavaScript API command;":String) : String
    这个可以说是整个“文档对象模型 (DOM)”的核心体现。

    文档对象模型(DOM)简单的说就是把你的脚本文件转化为可执行命令行。也就是把字符串转成可执行命令行
    。,它之所以强大在于你可以在程序里敲入一段字符串形式的代码,然后让他直接执行。当然了如果你是在as文件里敲的话要注意一点,如果你要执行的字符串脚 本里包含有字符串就要多加一层引号才行,不要认为MMExecute的参数已经给了个引号下边的字符串脚本就不需要给,那样往往是出错的原

    Tag:
  • 在这个地方查到的解决方案:http://hi.baidu.com/mr_ziqiang/blog/item/ede027d3118321073af3cf95.html

    步骤

    1、选择好你的背景
    2、选择你的动态文本框的默认颜色
    3、定义好你用于混合的矩形框的渐变颜色。
    4、选择一种合适的混合模式。(了解一下混合模式
    5、运行直接看效果。

    选哪种混合:

    一般选变暗、色彩增殖、叠加三种的任一种即可。

    看做好的效果

    动态文本渐变

    方法二:
    经过这样处理后的文字无法再用文本工具修改或编辑,一旦文本有误就得重新输入,很麻烦。经过几次摸索以后,我终于找到了解决的办法。其实方法也不难,就是利用蒙版(遮罩)来完成渐变字效果,而不必将文本打散,这样一来就可以随时修改和编辑文本而不受限制了。具体操作如下:

    1. 新建一Flash文件,以“渐变字”为名存盘。

    2. 在“图层1”的上方再加一层,命名为“mask”。

    3. 使“mask”图层的第一帧处于选中状态,在舞台上输入或导入所需文本。

    4. 选中“图层1”的第一帧,用矩形工具在舞台上绘制一个矩形,矩形的大小视文本域的大小而定,使其正好位于文本域的下方,矩形的填充色在混色器面板上编辑一种满意的渐变色即可。

    5. 右键单击“mask”图层的图层名,在弹出的菜单中选择“mask”,使其成为“遮罩层”。


     

    Tag:
  • 最近发现有不少通过“AS3 json”关键词搜索过来的朋友,可见还是有很多朋友对这方面关注的。不过现下有关AS3 JSON的文章是少之又少,网上搜索到的基本上也都是那同样的几篇文章转来转去罢了,也包括我之前那篇,也没什么例子。相信会让很多初学的朋友看得云里雾 里的,其实我也觉得奇怪,json其实也算蛮简单的,怎么就没人写篇好的教程呢。废话就不多说了,希望转载的朋友能注明一下出处,谢了。

    首先,你需要有一个JSON的类库,建议去下载adobe官方提供的产品外类库:as3corelib。类库的使用就不多说了,大家应该都知道。

    先说说获取数据。可以这么说,只要你懂AS3与XML的交互,那么就一定能懂JSON,因为两者几乎是一样的,你唯一需要做的只是了解一下JSON 的格式。例如下面这个JSON的例子,就像XML一样,你可以通过任何动态页面来生成这个格式,也可以通过静态的甚至TXT来读取也行。

    Json语言: Codee#6608
    [{"name":"Hans","age":"32"},
    {"name":"John","age":"12"},
    {"name":"Zaki","age":"34"},
    {"name":"Dr. Cox","age":"88"}]

    AS中的代码:

    ActionScript 3语言: Codee#6609
    package {
    import com.adobe.serialization.json.JSON;

    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.URLLoader;
    import flash.net.URLRequest;

    public class getJSON extends Sprite {
      public function getJSON() {
       var loader:URLLoader = new URLLoader();

       loader.load(new URLRequest( "http://127.0.0.1/json.php" ));//这里是你要获取JSON的路径
       loader.addEventListener(Event.COMPLETE, decodeJSON);
      }
      private function decodeJSON(evt:Event):void {
       var persons:Array = JSON.decode( URLLoader( evt.target ).data );
       //在这里,就可以通过操作数组来应用数据了,很方便
       for (var i=0; i<persons.length; i++) {
        trace( persons[i].name );
       }
      }
    }
    }

    是不是很简单呢?在这里我们只用到了decode()这个方法,其实JSON类库要用的也只有两个方法,另一个就是马上要用到的encode()。大家可以理解为编码与解码。发送数据的代码如下:

     

    ActionScript 3语言: Codee#6610
    package {
    import com.adobe.serialization.json.JSON;

    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.*;

    public class sendJSON extends Sprite {
      public function sendJSON() {
       var arr : Array = new Array({"name":"Hans","age":"32"},{"name":"John","age":"12"},{"name":"Zaki","age":"34"},{"name":"Dr. Cox","age":"88"});//这里是要发送的数据,可以直接写,也可以是由其他方法生成,不过要注意格式。
       sendjson( arr );
      }
      private function sendjson( a : Array ):void {
       var jsonString : String = JSON.encode(a);

       var urlVariables:URLVariables = new URLVariables();
       urlVariables.json = jsonString;

       var urlRequest:URLRequest = new URLRequest(http://127.0.0.1/json.php); //这里是接收数据的动态页。
       urlRequest.method = URLRequestMethod.POST;
       urlRequest.data = urlVariables;

       //其实到这已经结束了,下面的XML只是测试结果而已。
       var urlLoader:URLLoader = new URLLoader();
       urlLoader.addEventListener(Event.COMPLETE, onURLLoaderCompleteEvent);
       urlLoader.load(urlRequest);
      }
      private function onURLLoaderCompleteEvent( evt : Event ):void {
       var xml:XML = new XML(evt.target.data);
       trace(xml);
      }
    }
    }

     

    Tag:
  • json是JavaScript Object Notation的简写,是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它是基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集,也就是说他是来自于javascript的东西。因为现在ajax的流行,大部分网站会采用ajax的模式和构架,那么json会 是一个数据传输的首选(文本方式太简单,要是大数据量的时候无法理解,xml的方式数据量大,在解析的时候会增加服务器负担),那么要是一个网站从 ajax构架的基础上出一个flex/flash版的界面的时候使用json会最少地减少服务器端的程序改动。

    JSON的结构写法很容易理解,它原本就是以数据量小和清晰的数据格式而著称的。但是在AS中使用json其实并不是一个必须或是很好的选择,很多 时候我们还是会用XML,因为AS对XML的解析已经很好了。但是多了解一种数据交互形式,特别是如此简单的JSON,当然是有益无害的咯。

    在这里想说些题外话,很多人喜欢拿XML跟JSON的可读性以及解析来做比较,其实一个写法优秀的XML也不会比JSON差,举个例子来说吧,现假设有一个用户数据包括:用户名、密码、所在部门、性别、年龄。

    用XML表示如下:
    <?xml version="1.0" encoding="utf-8"?>
      <user>
      <name>张三 </name>
      <password>123456</password>
      <department>技术部</department>
      <sex></sex>
      <age>30</age>
      </user>
    对于这样一个XML来说,如果数据量大了的确让人头昏眼花,也不好处理,但是如果我们转化成下面这种形式的话:
    <?xml version="1.0" encoding="utf-8"?>
      <user>
    <people name="张三" password="123456" depattment="技术部" sex="男" age="30" />
      </user>
    再跟相应该的JSON来比较:
    {"name":"张三","password":"123456","department":"技术部","sex":"男","age":"30"}
    也不会相差太多咯。

    下面再说说adobe的官方的JSON类的用法吧。

    1、服务器端来的json
    语法:JSON.decode(String)
    从服务器端获得的应该是一个字符串,把它存入一个变量,然后通过JSON.decode(String)方法后,就可以通过点语法来访问这些值。下面是一个网络上找来的例子:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var serverJSON:String = '{ "programmers":{ "firstName": "Brett", "lastName":
    "McLaughlin", "email": "brett@newInstance.com" }, "firstName": "Jason",
    "lastName":"Hunter", "email": "jason@servlets.com" }, "firstName":
    "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }],
    "authors": "firstName": "Isaac", "lastName": "Asimov", "genre":
    "science fiction" }, "firstName": "Tad", "lastName": "Williams", "genre":
    "fantasy" }, "firstName": "Frank", "lastName": "Peretti", "genre":
    "christian fiction" }],"musicians": "firstName": "Eric", "lastName":
    "Clapton", "instrument": "guitar" },{ "firstName": "Sergei", "lastName":
    "Rachmaninoff", "instrument": "piano" }]}'

    var s:Object = JSON.decode(serverJSON);
    //开始使用
    trace(s.programmers[0].firstName);//输出:Brett

    2、本地对象做成JSON
    语法:JSON.encode(Object)
    其实也就是跟读取相反,创建一个对象然后输出而已了。你可以直接拼写JSON的字符串,也可以通过对象来创建了。

    1
    2
    3
    4
    5
    6
    7
    import json.*;
    var myObject:Object = new Object();
    myObject.ab = "adfsdf";
    myObject.cd = Math.random();
    trace(JSON.encode( myObject ));
    //输出:{"ab":"adfsdf","cd":0.0599129400216043}
    这样就可以给服务器了。

     

    Tag:
  • AS3中比较常用到的公式以备用。

    基本三角函数的计算:
    角的正弦值 = 对边 / 斜边
    角的余弦值 = 邻边 / 斜边
    角的正切值 = 对边 / 邻边

    角度制与弧度制的相互转换:
    弧度 = 角度 * Math.PI / 180
    角度 = 弧度 * 180 / Math.PI

    计算两点间距离:
    dx = x2 – x1;
    dy = y2 – y1;
    dist = Math.sqrt(dx*dx + dy*dy);

    缓动公式:
    sprite.x += (targetX - sprite.x) * easing;//easing为缓动系数变量
    sprite.y += (targetY - sprite.y) * easing;

    弹性公式:
    vx += (targetX - sprite.x) * spring;//spring为弹性系数
    vy += (targetY - sprite.y) * spring;
    sprite.x += (vx *= friction);//friction为摩擦力
    sprite.y += (vy *= friction);

    偏移弹性公式:
    var dx:Number = sprite.x - fixedX;
    var dy:Number = sprite.y - fixedY;
    var angle:Number = Math.atan2(dy, dx);
    var targetX:Number = fixedX + Math.cos(angle) * springLength;
    var targetY:Number = fixedX + Math.sin(angle) * springLength;

    向鼠标旋转(或向某点旋转)
    dx = mouseX - sprite.x;
    dy = mouseY - sprite.y;
    sprite.rotation = Math.atan2(dy, dx) * 180 / Math.PI;

    波形运动:
    public function onEnterFrame1(event:Event):void {
    ball.y=centerScale+Math.sin(angle)*range;
    angle+=speed;
    }

    心跳:
    public function onEnterFrame1(event:Event):void {
    ball.scaleX=centerScale+Math.sin(angle)*range;
    ball.scaleY=centerScale+Math.sin(angle)*range;
    angle+=speed;
    }

    圆心旋转:
    public function onEnterFrame(event:Event):void {
    ball.x=centerX+Math.cos(angle)*radius;
    ball.y=centerY+Math.sin(angle)*radius;
    angle+=speed;
    }

    椭圆旋转:
    public function onEnterFrame(event:Event):void {
    ball.x=centerX+Math.cos(angle)*radiusX;
    ball.y=centerY+Math.sin(angle)*radiusY;
    angle+=speed;
    }

    颜色运算得到透明值:
    var t:uint=0×77ff8877
    var s:uint=0xff000000
    var h:uint=t&s
    var m:uint=h>>>24
    trace(m)

    转换为十进制:
    trace(hexValue);
    十进制转换为十六进制:
    decimalValue.toString(16)

    颜色提取:
    red = color24 >> 16;
    green = color24 >> 8 & 0xFF;
    blue = color24 & 0xFF;
    alpha = color32 >> 24;
    red = color32 >> 16 & 0xFF;
    green = color32 >> 8 & 0xFF;
    blue = color232 & 0xFF;

    按位计算得到颜色值:
    color24 = red << 16 | green << 8 | blue;
    color32 = alpha << 24 | red << 16 | green << 8 | blue;

    过控制点的曲线:
    // xt, yt是你想要让曲线通过的那一点
    // x0, y0 和x2, y2 是曲线的终点
    //PS.发现很多人转帖都是直接复制粘贴,也不翻译一下
    xt * 2 – (x0 + x2) / 2;
    y1 = yt * 2 – (y0 + y2) / 2;
    moveTo(x0, y0);
    curveTo(x1, y1, x2, y2);

    Tag:
  • 在IE6下很容易,把FLASH所在的DIV的z-index属性设为-1就可以了。

    IE7下应该大多数人都知道,在<object>标签里面加上
    <param name=”wmode” value=”transparent” />或者
    <param name=”wmode” value=”opaque” />

    在FF跟Chrome中,在IE7的基础上再在<embed>标签里添加属性wmode=”transparent”或wmode=”opaque”。

    在这里列一个总的代码:

    <div style=”z-index:-1;”>
    <object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0″ width=”350″ height=”180″>
         <param name=”movie” value=”/mp3/player.swf” />
         <param name=”quality” value=”high” />
         <param name=”wmode” value=”transparent” />
         <embed src=”/mp3/player.swf” quality=”high” pluginspage=”http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash” type=”application/x-shockwave-flash” width=”350″ height=”180″ wmode=”transparent”></embed>
       </object>
     </div>

    或者可以简写为
    <object width="550" height="400" data="flash.swf" type="application/x-shockwave-flash">
    <param name="wmode" value="transparent" />
    <param name="src" value="flash.swf" />
    </object>

    Tag: