posts - 89,  comments - 47,  trackbacks - 0
  2007年3月2日

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

posted @ 2007-03-02 14:14 FireYang 阅读(29) | 评论 (1)编辑
  2007年2月10日
关于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 阅读(780) | 评论 (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 阅读(630) | 评论 (1)编辑
  2007年2月6日
http://www.adobe.com/devnet/flex/articles/flex_skins.html
posted @ 2007-02-06 15:09 FireYang 阅读(569) | 评论 (0)编辑
http://www.nshen.net/designpattern/DesignPattern/DesignPattern.htm
一个很好的关于java版的设计模式,在AS上应该能很好的得到应用.
posted @ 2007-02-06 14:44 FireYang 阅读(53) | 评论 (0)编辑

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

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

posted @ 2007-02-06 09:22 FireYang 阅读(1121) | 评论 (22)编辑
  2007年1月27日
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)编辑
  2007年1月16日
<?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 阅读(436) | 评论 (0)编辑
  2007年1月15日
盗贼的blog上发现这个东东,呵呵,cartoon.msn.com.cn,有兴趣的可以玩玩.
呵呵,也试了一下,贴上来看看:
posted @ 2007-01-15 15:13 FireYang 阅读(147) | 评论 (0)编辑