Posts Tagged ‘Flash’

  • 1.搜索引擎的抓取,目前比较靠谱的是通过向自己的Flash里注入一个由所有引擎提供的Class来实现,Google已经为分析提供了类似的Class。

    2.浏览器兼容问题,至少需要可以正常的前进,后退及收藏,SWFAddress 解决了前进后退及收藏的问题,但是,需要在Flash内部做大量的配合SWFAddress的处理,Flash IDE下需要制定桢,Flex下需要指定states,这还是很繁琐的。

    3.更好的自动更新机制,最好做到 ,只要有网络,就尝试着去检测当前FlashPlayer版本和最高版本,然后提示用户去不去升级。而不是像现在这样,需要自己用Js和Flash去帮Adobe兼容这个事情。

  • package
    {
    	import flash.display.Bitmap;
    	import flash.display.BitmapData;
    	import flash.display.Loader;
    	import flash.display.Sprite;
    	import flash.events.Event;
    	import flash.geom.Matrix;
    	import flash.net.URLRequest;
    	import flash.text.TextField;
    
    	public class Example00 extends Sprite
    	{
    		private var load:Loader;
    
    		public function Example00()
    		{
    			super();
    
    			load = new Loader()
    			var req:URLRequest = new URLRequest("http://i3.sinaimg.cn/home/deco/2008/0325/sinahome_Logo.gif")
    			load.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoad)
    			load.load(req);
    			addChild(load);
    
    		}
    
    		public function onLoad(e:Event):void{
    			var tf:TextField = new TextField();
    			tf.text = "Flash复制对象的Bitmap";
    			addChild(tf);
    
    			var bounds:Object = this.getBounds ( this );
    
    			var mat:Matrix = new Matrix();
    			mat.translate ( -bounds.x, -bounds.y );
    
    			var buffer:BitmapData = new BitmapData ( this.width+1, this.height+1, true, 0 );
    
    			buffer.draw ( this, mat );
    
    			var newBuffer:Bitmap = new Bitmap(buffer)
    
    			addChild(newBuffer)
    
    			newBuffer.x = 100
    			newBuffer.y = 200
    		}
    
    	}
    }
  • 1.如果不能保证一定会有JavaScript的回调函数,在ExternalInterface.call的时候,一定要Try,不然某些浏览器(不是FP)将会使Flash。

    2.交互时用一个Object作为参数的容器进行传入传出可以对Js人员很方便,他们封装起来很爽,但是要注意:请Js人员严格传入Object,并且不要尝试在As里面兼容传入Object和String,Number等各种情况。

    3.虽然Adobe说FP是无视浏览器的,但是Js不能无视浏览器,要写2套代码,所以有时候,我们的思路也要扩展为写2套代码来兼容浏览器问题。

  • Microphone.getMicrophone(),在某些情况下,即使没有麦克风,也会返回name为声卡的对象…

    如果一定要判定是否有麦克风,可以使用返回对象的activityLevel属性来判定。

  • 也就是很熟悉的混合模式,BlendMode类枚举了所有的混合模式,如下

    • BlendMode.ADD ("add"):通常用于创建两个图像之间的动画变亮模糊效果。
    • BlendMode.ALPHA ("alpha"):通常用于在背景上应用前景的透明度。
    • BlendMode.DARKEN ("darken"):通常用于重叠类型。
    • BlendMode.DIFFERENCE ("difference"):通常用于创建更多变动的颜色。
    • BlendMode.ERASE ("erase"):通常用于使用前景 Alpha 剪掉(擦除)背景的一部分。
    • BlendMode.HARDLIGHT ("hardlight"):通常用于创建阴影效果。
    • BlendMode.INVERT ("invert"):用于反转背景。
    • BlendMode.LAYER ("layer"):用于强制为特定显示对象的预构成创建临时缓冲区。
    • BlendMode.LIGHTEN ("lighten"):通常用于重叠类型。
    • BlendMode.MULTIPLY ("multiply"):通常用于创建阴影和深度效果。
    • BlendMode.NORMAL ("normal"):用于指定混合图像的像素值覆盖基本图像的像素值。
    • BlendMode.OVERLAY ("overlay"):通常用于创建阴影效果。
    • BlendMode.SCREEN ("screen"):通常用于创建亮点和镜头眩光。
    • BlendMode.SUBTRACT ("subtract"):通常用于创建两个图像之间的动画变暗模糊效果。
    其中,BlendMode.LAYER只是强制缓冲图像,不进行实际混合,有很多实际用途,例如,使TextField的Alpha起作用…
  • 原来describeType是这么用的…

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
    creationComplete="init()">
    <mx:Script>
    <![CDATA[
    import mx.controls.Alert;
    public function init():void{
    
    var description : XML = describeType( this );
    var accessors : XMLList = description.accessor.( @access == "readwrite" ).@name;
    
    var str:String;
    for ( var i : uint = 0; i < accessors.length(); i++ )
    {
    var name : String = accessors[ i ];
    
    str += (name+”\n”);
    }
    Alert.show(str);
    }
    ]]>
    </mx:Script>
    </mx:Application>