posts - 89,  comments - 47,  trackbacks - 0
  2006年6月15日

为了更好的学习,买了自己的空间,所以把blog 也搬到那里去了。欢迎大家多多来我的blog,一起探讨、一起学习。当然也希望继续支持博客园!
http://www.fireyang.com

posted @ 2007-03-02 14:14 FireYang 阅读(29) | 评论 (1)编辑
关于AS3的png图片编码器:
代码如下:
  1. /*
  2. Adobe Systems Incorporated(r) Source Code License Agreement
  3. Copyright(c) 2005 Adobe Systems Incorporated. All rights reserved.
  4. Please read this Source Code License Agreement carefully before using
  5. the source code.
  6. Adobe Systems Incorporated grants to you a perpetual, worldwide, non-exclusive,
  7. no-charge, royalty-free, irrevocable copyright license, to reproduce,
  8. prepare derivative works of, publicly display, publicly perform, and
  9. distribute this source code and such derivative works in source or
  10. object code form without any attribution requirements. 
  11. The name "Adobe Systems Incorporated" must not be used to endorse or promote products
  12. derived from the source code without prior written permission.
  13. You agree to indemnify, hold harmless and defend Adobe Systems Incorporated from and
  14. against any loss, damage, claims or lawsuits, including attorney's
  15. fees that arise or result from your use or distribution of the source
  16. code.
  17. THIS SOURCE CODE IS PROVIDED "AS IS" AND "WITH ALL FAULTS", WITHOUT
  18. ANY TECHNICAL SUPPORT OR ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
  19. BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  20. FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  ALSO, THERE IS NO WARRANTY OF
  21. NON-INFRINGEMENT, TITLE OR QUIET ENJOYMENT.  IN NO EVENT SHALL MACROMEDIA
  22. OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  23. EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  24. PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  25. OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  26. WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  27. OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOURCE CODE, EVEN IF
  28. ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29. */
  30. package com.adobe.images
  31. {
  32. import flash.geom.*;
  33. import flash.display.Bitmap;
  34. import flash.display.BitmapData;
  35. import flash.utils.ByteArray;
  36.  
  37. public class PNGEncoder
  38. {
  39.     public static function encode(img:BitmapData):ByteArray {
  40.         // Create output byte array
  41.         var png:ByteArray = new ByteArray();
  42.         // Write PNG signature
  43.         png.writeUnsignedInt(0x89504e47);
  44.         png.writeUnsignedInt(0x0D0A1A0A);
  45.         // Build IHDR chunk
  46.         var IHDR:ByteArray = new ByteArray();
  47.         IHDR.writeInt(img.width);
  48.         IHDR.writeInt(img.height);
  49.         IHDR.writeUnsignedInt(0x08060000); // 32bit RGBA
  50.         IHDR.writeByte(0);
  51.         writeChunk(png,0x49484452,IHDR);
  52.         // Build IDAT chunk
  53.         var IDAT:ByteArray= new ByteArray();
  54.         for(var i:int=0;i < img.height;i++) {
  55.             // no filter
  56.             IDAT.writeByte(0);
  57.             var p:uint;
  58.             var j:int;
  59.             if ( !img.transparent ) {
  60.                 for(j=0;j < img.width;j++) {
  61.                     p = img.getPixel(j,i);
  62.                     IDAT.writeUnsignedInt(
  63.                         uint(((p&0xFFFFFF) << 8)|0xFF));
  64.                 }
  65.             } else {
  66.                 for(j=0;j < img.width;j++) {
  67.                     p = img.getPixel32(j,i);
  68.                     IDAT.writeUnsignedInt(
  69.                         uint(((p&0xFFFFFF) << 8)|
  70.                         (p>>>24)));
  71.                 }
  72.             }
  73.         }
  74.         IDAT.compress();
  75.         writeChunk(png,0x49444154,IDAT);
  76.         // Build IEND chunk
  77.         writeChunk(png,0x49454E44,null);
  78.         // return PNG
  79.         return png;
  80.     }
  81.     private static var crcTable:Array;
  82.     private static var crcTableComputed:Boolean = false;
  83.     private static function writeChunk(png:ByteArray,
  84.             type:uint, data:ByteArray):void {
  85.         if (!crcTableComputed) {
  86.             crcTableComputed = true;
  87.             crcTable = [];
  88.             var c:uint;
  89.             for (var n:uint = 0; n < 256; n++) {
  90.                 c = n;
  91.                 for (var k:uint = 0; k < 8; k++) {
  92.                     if (c & 1) {
  93.                         c = uint(uint(0xedb88320) ^
  94.                             uint(c >>> 1));
  95.                     } else {
  96.                         c = uint(c >>> 1);
  97.                     }
  98.                 }
  99.                 crcTable[n] = c;
  100.             }
  101.         }
  102.         var len:uint = 0;
  103.         if (data != null) {
  104.             len = data.length;
  105.         }
  106.         png.writeUnsignedInt(len);
  107.         var p:uint = png.position;
  108.         png.writeUnsignedInt(type);
  109.         if ( data != null ) {
  110.             png.writeBytes(data);
  111.         }
  112.         var e:uint = png.position;
  113.         png.position = p;
  114.         c = 0xffffffff;
  115.         for (var i:int = 0; i < (e-p); i++) {
  116.             c = uint(crcTable[
  117.                 (c ^ png.readUnsignedByte()) &
  118.                 uint(0xff)] ^ uint(c >>> 8));
  119.         }
  120.         c = uint(c^uint(0xffffffff));
  121.         png.position = e;
  122.         png.writeUnsignedInt(c);
  123.     }
  124. }
  125. }

如何使用:

Flex Paint (需要Flash 9)


1、如图设置界面;
2、定义一个BitmapData 对象
   var bd:BitmapData = new BitmapData(canvas.width,canvas.height); 
3、将canvas中的像素拷贝到这个对象里
   bd.draw(canvas);
4、然后将BitmapData 转换成png格式的ByteArray 对象
5、将最后的png二进制传到服务器端保存.

posted @ 2007-02-10 12:42 FireYang 阅读(785) | 评论 (5)编辑
原文:

Global Variables within Flex Applications

在Flex应用程序中的全局变量

最近在Flex Components的邮件列表里经常有这样的一些提问:如果在Flex应用程序中设置全局变量?由于它的经常出现,所以在我的blog上(当然是指原文的作者)贴出答案。
其实非常简单,只用在你的主应用程序类里(mx:Application )定义一个公有(public)的变量就可以了,如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    
<mx:Script>
        
<![CDATA[
            public var foo:String = "bar";
        
]]>
    
</mx:Script>
</mx:Application>
你能在应用程序的任何地方访问到这个变量,像这样:
Application.application.foo
如果有需要,你也可以设置一个绑定变量。(添加一个bindable标签)
欢迎在回复里提出问题或意见。(无论是原文还是我的blog)
posted @ 2007-02-10 10:30 FireYang 阅读(644) | 评论 (1)编辑
http://www.adobe.com/devnet/flex/articles/flex_skins.html
posted @ 2007-02-06 15:09 FireYang 阅读(585) | 评论 (0)编辑
http://www.nshen.net/designpattern/DesignPattern/DesignPattern.htm
一个很好的关于java版的设计模式,在AS上应该能很好的得到应用.
posted @ 2007-02-06 14:44 FireYang 阅读(56) | 评论 (0)编辑

把好的电子书共享出来,但还是希望大家购买正版的图书.

为了避免乱下载,请先成为讨论组的成员:讨论组

posted @ 2007-02-06 09:22 FireYang 阅读(1123) | 评论 (22)编辑
RIA SEED是一个google的groups,以前是在mmug上的一群人组件的,讨论mm技术的一个园地.
现在在google上按了个家,继续mm精神,继续RIA
希望更多的RIA开发者,在这里共享自己的经验.
Google 网上论坛 Beta 版
RIA SEED (OLD MMUGCN)
访问此论坛
Google 网上论坛 Beta 版
订阅 RIA SEED (OLD MMUGCN)
电子邮件:
访问此论坛

如果要gmial的邀请,请留言,我这里还有很多.
功能(简单介绍):

  1. 上传文件
  2. 直接把资料发送到邮件,可以设置,主题或所有内容
  3. 有自带的wiki功能
posted @ 2007-01-27 09:01 FireYang 阅读(178) | 评论 (0)编辑
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" height="100%">
    
<mx:Style>    
        TitleWindow    
        {        
                backgroundAlpha: 0.9;
                backgroundColor: #9199A4;        
                borderColor: #9199A4;        
                borderAlpha: 1.0;        
                borderStyle: "none";        
                borderThickness: 0;        
                paddingBottom: 0;        
                paddingLeft: 0;        
                paddingRight: 0;        
                paddingTop: 0;        
         }
     
</mx:Style>    
     
<mx:Script>
         
<![CDATA[    
             import mx.managers.*;    
             private function floatControlBar() : void    
             {        
                 rteControl.parent.removeChild(rteControl);        
                 rteControl.addChild(DisplayObject(rte.toolbar));        
                 rte.showControlBar=false;        
                 mx.managers.PopUpManager.addPopUp(rteControl, rte, false);    
             }
]]>
     
</mx:Script>    
     
<mx:RichTextEditor id="rte" htmlText="" headerHeight="5"         
         creationComplete
="floatControlBar()"/>    
    
<mx:TitleWindow id="rteControl" width="325" title="ToolBar"/>    
</mx:Application>

posted @ 2007-01-16 22:16 FireYang 阅读(346) | 评论 (0)编辑

ActionScript 3 Tip of the Day
从上面的连接进去,那里的小技巧用处大的很.收藏了先。
想想还是把它翻译过来吧

  1. 改变帧的播放速度
    在AS3里的flash.display.Stage类可以改变播放速度。
    stage.frameRate = 12;
    速度的值在范围0.01~1000之间。
  2. 类的作用域绑定到类的方法上
    以下几种方式,this都指向类。
    • 类直接调用方法
    • 方法重新引用
    • 用call或apply调用
      package {
          
      import flash.display.Sprite;
          
          
      public class ClassScope extends Sprite {
              
              
      public function ClassScope() {      
                  traceThis(); 
      // "Class Instance"
                  
                  var obj:Object 
      = new Object();
                  obj.traceThis 
      = traceThis;
                  obj.traceThis(); 
      // "Class Instance"
                  
                  traceThis.call(
      new Sprite()); // "Class Instance"
              }

              
      public override function toString():String {
                  
      return "Class Instance";
              }
              
              
      public function traceThis():void {
                  trace(
      this);
              }
          }
      }
  3. 图形对象和绘画接口
    包括以下几种
    • drawCircle(x:Number, y:Number, radius:Number):void
    • drawEllipse(x:Number, y:Number, width:Number, height:Number):void
    • drawRect(x:Number, y:Number, width:Number, height:Number):void
    • drawRoundRect(x:Number, y:Number, width:Number, height:Number, ellipseWidth:Number, ellipseHeight:Number):void
      如下使用:
      //画一个蓝色的圆角矩形
      var square:Sprite = new Sprite();
      square.graphics.beginFill(
      0xFF);
      square.graphics.drawRoundRect(
      00100501010);
      square.graphics.endFill();
      addChild(square);
  4. 新的变量类型

    简单:

    • Boolean
    • int
    • null
    • Number
    • String
    • uint
    • undefined

    复杂:

    • Object
    • Array
    • Date
    • Error
    • Function
    • RegExp
    • XML
    • XMLList
    注意事项:
    • Void不再是大写,而是小写的void;
    • 多了一个新的类型*,表示任意类型,在as3里一定要指定变量类型,如果不确定可以用*代替;
    • XML 对象也不同于以前as1和as2中的XML 对象,原来的XML 对象在as3里用XMLObject代替;新的XML是基于E4X标准的xml;
    • integer 类型在as3里不再存在,只有int和uint类型,他们是不能表示小数的,只能用来表示整数,这样在类似for这样的循环运算中比较方便,而且int可以和较小的Number类型数值进行转换(Number过大容易发生溢出),而像uint一般用在特殊的地方,比如color;
posted @ 2007-01-16 11:35 FireYang 阅读(437) | 评论 (0)编辑
盗贼的blog上发现这个东东,呵呵,cartoon.msn.com.cn,有兴趣的可以玩玩.
呵呵,也试了一下,贴上来看看:
posted @ 2007-01-15 15:13 FireYang 阅读(149) | 评论 (0)编辑

以前在flex中如果要切换不同的样式,用css文件来导入;这样做能丰富应用程序的界面,但是还是有一个问题存在,就是在每次切换的时候都要重新装载css文件,你切换7次就要装载7次很不方便,现在在2.0.1中可以直接把css文件编译成swf,只要装载一次就可以了,具体用法如下:

  1. 设计样式
    我一般是通过 Flex 2 Style Explorer,很直观,设计好后就可以直接粘贴到css文件里使用了.
    Flex 2 Style Explorer
    Download Flex Style Explorer ZIP
  2. 运行命令行
    mxmlc style1CSS.css
    和编译mxml文件一样的方便,编译后会产生'style1CSS.swf'文件,你在以后的App里就可以使用了.
  3. 使用样式swf文件
    <mx:Application 
     
    xmlns:mx="http://www.adobe.com/2006/mxml" 
     layout
    ="absolute"
     initialize
    ="StyleManager.loadStyleDeclarations( 'style1CSS.swf' )" 
     viewSourceURL
    ="srcview/index.html">
     
     
    <mx:ComboBox 
      
    id="styleCombo"
      top
    ="10" left="10" right="10"
      dataProvider
    ="['style1CSS','style2CSS','style3CSS']"
      change
    ="StyleManager.loadStyleDeclarations( styleCombo.selectedItem + '.swf' )">
     
    </mx:Application>
  4. 运行示例Runtime CSS Example

英文原文:Flex 2.0.1 - Understand Runtime CSS

posted @ 2007-01-15 13:42 FireYang 阅读(501) | 评论 (0)编辑

对于FLEX初学者很好的推荐网站,通过这些网站能很快上手flex;

2007年2月10日11:28:41
http://www.bytearray.org/?p=26  flash保存jpg格式图片

2007年1月16日11:34:00新添加

  1. Flex.org 这里有很高的高手blog列表和丰富的资源下载
  2. Flex Builder 的开始页,包括:flex是如何工作,示例、指南和帮助等:
    • Component Explorer 这里可以看到各个组件的效果和使用代码,开发必不可少.
    • Flex Style Explorer 在这里你可以通过简单的选择组件设置样式,它会自动产生css,再复制,粘贴就可以了.
  3. 讨论邮件列表和论坛:
    •   FlexCoders 这个邮件列表里有很多n人,在这里的问题99%能得到回复,是你请求帮助和帮助别人的好场所.
    • FlexComponents关于组件开发的一个邮件列表,是由一群组件开发者建立的邮件列表,主要讨论组件的开发和使用.
  4. Flex Developer Center 这里有最新的文章,而且一些新的文章会发布到Adobe.com 网站上.
  5. Flex Cookbook 这里放置很多关于FLEX的代码和示例,这个站点和wiki很相似,文章和代码基本来自开发者,是一个强大的资源库.

英文原文:Top 5 Resource for Learning Flex

2007年1月16日11:34:00新添加

以后继续添加!

posted @ 2007-01-15 11:47 FireYang 阅读(532) | 评论 (0)编辑
又得到一本新的ActionScript 3.0的电子书,贴上来共享一下
Advanced ActionScript 3 with Design Patterns
posted @ 2006-12-30 17:25 FireYang 阅读(351) | 评论 (1)编辑
到了北京几天后,比完了ITAT就去见老刘,老刘是我在计算机群里认识的朋友,由于是初次见面,彼此都不认识,只是通过手机中简单的约定找到了彼此,第一眼看到老刘,有一种亲切感,他长的很“可爱”(希望他别K我)。而最让我感动的是他的礼物,现在贴上来铭记一下:
posted @ 2006-12-25 22:07 FireYang 阅读(98) | 评论 (0)编辑

SpringGraph Flex Component
有几个demo,不多做解释,用了就知道强大了,关于如何使用,以后在慢慢写了。
Demo:(在demo里点右键可以选择查看他的源代码,真是一切为了大家啊,对作者敬个礼)

下载:Download (里面有代码、文档和示例)

posted @ 2006-12-16 11:29 FireYang 阅读(528) | 评论 (0)编辑
代码来自http://try.flex.org/index.cfm
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                layout
="vertical"
                creationComplete
="initApp()">

<mx:Script>
<![CDATA[

    
// On startup
    public function initApp():void
    {
        
// Set filter function
        
// Be careful to set filterFunction
        
// only after ArrayCollection has been
        
// populated.
        myData.filterFunction=processFilter;
    }

    
// Filter function
    public function processFilter(item:Object):Boolean
    {
        var result:Boolean
=false;

        
// If no filter text, or a match, then true
        if (!item.name.length
                
|| item.name.toUpperCase().indexOf(txtFilter.text.toUpperCase()) >= 0)
        result
=true;

        
return result;
    }
]]
>
</mx:Script>

<!-- Data (use ArrayCollection) -->
<mx:ArrayCollection id="myData">
    
<mx:source>
        
<mx:Object name="Ben Forta"
            location
="Oak Park, MI"
            phone
="(248)555-5555" />
        
<mx:Object name="Jane Doe"
            location
="New York, NY"
            phone
="(212)555-1234" />
        
<mx:Object name="Jim Jones"
            location
="Atlanta, GA"
            phone
="(414)555-1212" />
        
<mx:Object name="Roberta Roberts"
            location
="Chicago, IL"
            phone
="(312)555-4321" />
        
<mx:Object name="Steve Stevens"
            location
="Boston, MA"
            phone
="(617)555-5656" />
    
</mx:source>
</mx:ArrayCollection>

<!-- UI -->
<mx:HBox width="