skip to main |skip to sidebar
显示标签为“flash”的博文。显示所有博文
显示标签为“flash”的博文。显示所有博文

2007-10-14

[AS3]位图的色阶控制(1) -- 得到色阶

色阶为位图的颜色分布的图。做过图形处理的应该很熟悉。

比如下图:上面为原图,下面为色阶。

Historgram

得到方法:

  1. 灰色化。把各个通道求平均。用ColorMatrixFilter即可。
  2. 用threshold来得到颜色分布。threshold的返回值为匹配的像素的个数。

代码:


package {
    import flash.display.*;
    import flash.filters.ColorMatrixFilter;
    import flash.geom.Point;

    public class TestBitmap extends Sprite {
        [Embed(source="023.jpg")]
        private var SampleImage:Class;

        public function TestBitmap() {
            var bmd:BitmapData = Bitmap(addChild(new SampleImage())).bitmapData;
            var s:Sprite = new Sprite();
            createHistogram(bmd,s);
            addChild(s).y = bmd.height + 10;
        }

        //生成色阶
        private function createHistogram(bmd:BitmapData, s:Sprite):void {
            //灰度画
            var cmf:ColorMatrixFilter = new ColorMatrixFilter(
                [1 / 3, 1 / 3, 1 / 3, 0, 0, 
                 1 / 3, 1 / 3, 1 / 3, 0, 0, 
                 1 / 3, 1 / 3, 1 / 3, 0, 0]
            );
            var bmd2:BitmapData = bmd.clone();
            bmd2.applyFilter(bmd2, bmd2.rect, new Point(), cmf);

            //用threshold来得到颜色分布
            var values:Array = [];
            for(var i:int = 0; i < 0x256; i++) {
                values[i] = bmd2.threshold(bmd2, bmd2.rect, new Point(), "==", i, 0, 0xff, false);
            }
            bmd2.dispose();

            //画色阶
            var max:int = bmd.width * bmd.height / 50;
            s.graphics.lineStyle(1);
            for(i = 0; i < 256; i++) {
                s.graphics.moveTo(i, 100);
                s.graphics.lineTo(i, Math.max(0, 100 - values[i] / max * 100));
            }
        }
    }
}

[AS3]位图过度之模板过度

先来看效果:

它使用的模板为:

运行原理很简单,主要是运用阈值,再设置原图的Alpha通道。详细看源码

源码下载BitmapPatternTween.fla

2007-10-09

Adobe AIR的电子署名

AIR Beta 2以后,在打包时必须制作电子署名。电子署名的目的为:

  1. 确认包未被修改(比如说被绑定病毒)
  2. 确认包的创建者。

如果未署名,将会生成扩展名为airi的文件,这个如果不用adt等来署名的话,将无法安装到AIR运行环境。

署名可以使用CA发行的或者自己的署名的证明书。用自己的署名的证明书的话无法用于以上的确认包的创建者的目的。

注意,电子署名并不保证程序能够正常运行。并且,因为现在为Beta,所以并不能保证电子署名本身功能的正确性。

自己的署名的证明书的制作

自己的署名的证明书可以用 Flex Builder 3 Beta 2,Flash CS3/Dreamweaver CS3 的 AIR Beta 2用的扩展插件来制作。注意,千万别忘了密码

用Flex Builder 3 Beta 2来制作

执行Export向导,当显示"Digital Signature"的画面时,点"Create..."按钮。再输入署名,密码,生成的文件,点OK。注意在名字里可以使用的只有英数字。

用Flash CS3来制作

选择AIR->Application & Installer Settings打开设置窗口,并且确认 Sign the AIR file with a digital certificate 是选中的。再点击"Digital Signature"右边的 "Change..."按钮。这将会打开设定署名的窗口。以后与Flex Builder相同。(可以选择1024 Bit与2048 Bit)

用Dreamweaver CS3来制作

选择Site->AIR Application Settings...打开设置窗口。再点击"Digital signature"右边的"Set..."。这将会打开设定署名的窗口。以后与Flash CS3相同。

2007-07-29

Flash-Ajax Video Component

最近,在Adobe Labs公开了一个 Flash-Ajax Video Component

什么是Flash-Ajax Video Component?

Flash-Ajax Video Component(FAVideo) 是一个轻量级的,开源的用 Ajax+Flash 来播放flv的组件。它可以运用在 Ajax 的程序里。它可以使在 Javascript 里控制 Video 像在 Flash 那样容易。

Hello World 程序

<html>
 <head>
  <title>Various ways to work with FAVideo</title>
  <script src="AC_RunActiveContent.js" type="text/javascript"></script>
  <script src="FAVideo.js" type="text/javascript"></script>
 </head>
 <body onLoad="">
  <div id="divOne"></div>
  <script type="text/javascript">
   playerOne = new FAVideo(
    "divOne", "demo_video.flv",0,0,{ autoLoad:true, autoPlay:true });
  </script>
  <script>
   playerOne.addEventListener("playheadUpdate",this,myHandler);
   playerOne.removeEventListener("playheadUpdate",this,myHandler);
   function myHandler() {
    //alert("eh");
   }
  </script>
 </body>
</html>

运行截图:

FAVideo Demo

2007-07-27

SWF与FLV ver 9 的文件格式公开了!

SWF与FLV ver 9 的文件格式终于公开了。在这里(Adobe Player Licensing)可以签约得到。

现在,可以研究SWF的格式了。

注意,根据Licence,这个文件格式只能用于SWF的生成,而不能用于开发Player。

2007-07-17

3D的宇宙树

一个用Papervision 3D写的3D的宇宙树

World Tree in Papervision 3D and AS3

2007-06-06

四个原因让Silverlight无法取代Flash

原文

微软不是一个令人尊敬的创新型企业,但它凭借其强大的技术背景和雄厚的资金实力,通过复制、模仿、完善竞争对手的产品,往往可以做到后来居上。Flash最大的优势在于它的技术成熟、稳定,并且已经拥有了一大批的忠实拥护者,在当前网络动画编辑领域居于绝对领先地位。微软发布的Silverligh是一个跨浏览器运行的插件,和Flash一样,可以显示矢量图形、动画和视频。

虽然在很多方面,Silverlight表现出了比Flash更佳的性能,例如与AJAX结合更紧密,更容易动态生成,对搜索引擎更友好,开发工具集成度更高,等等。本文作者还是从以下四个方面列举了Silverlight无法取代Flash的理由。

技术潜力

对于一个专业开发者,在考虑选择哪门技术的时候,很重要的一个方面就是这门技术的发展潜力。包括它的改善空间、提升余地,以及你投入时间掌握这门技术后获得的经济回报。

在短时间内,Silverlight会表现出强大的潜力。微软是一家资本雄厚的大公司,典型的微软模式就是,微软会为Silverlight砸很多钱,让人们相信这是一门值得学习的技术。我知道有许多Flash开发者已经通过开发Silverlight项目赚取了可观的收入,这些项目是由Redmond直接或间接援助的。Adobe在这个方面完全不能和微软竞争。虽然Adobe也有雄厚的资金,但还远比不上微软那样富到可以买上一个小国家。

从长远来看,人们从Silverlight开发中学到的基本知识也不会昙花一现。但是,如果你真的对开发跨平台交互式WEB感兴趣,Silverlight技术未来将会在很大程度上把你的成功锁定在同一个平台(Windows)上。

小结:Flash也许没有如Silverlight淘金般的发展潜力,但它是一门非常确立和成熟的技术(98%的安装基础,其中85%以上是Flash Player 9版本),它还会继续扩大它的使用范围,并在相当长的时间内在开发交互式Web领域稳定增长。当前微软在推动Silverlight发展方面投入了大量的金钱,但是在未来如果微软不再象现在这样往里面砸钱的话,Silverlight的前景就另人担忧了。

运行时

大多数对这两门技术的讨论都集中在其虚拟机的性能上。很正常,一个平台的成功性在很大程度上决定于它的性能。对于Silverlight,我并不是了解太多,但从现有资料看来,当前1.0beta VM基本上是SVG/WM接口。它并不支持构件(AKA controls),没有现成的语言解释器,也没有太多另人兴奋的亮点。而在新发布的α版Silverlight 1.1中这些方面有了明显的改进。但是Adobe在这方面还是处于领先地位,成熟的跨平台开发体验,对目标市场也有更深入的理解。

接口大小和实用性也是考察的重要因素。Flash player,包括两个虚拟机、大量的功能程序,只有2MB,功能残缺不全的Silverlight1.0 beta是1.2MB(Mac上是5.3MB)。支持动态语言运行的α版Silverlight 1.1扩大到4.2MB(Mac上是10.3MB),如果要浏览Managed Silverlight的网页,就得下载这个Runtime,这对于储存空间拮据的手机系统来说,还是稍嫌庞大些。我预计将来还会更加庞大。接口大小在几年前也许还不是什么大问题,但它仍然会对接受度有很大的影响。在另一个方面说来,与网络相连的电脑上已经有98%都安装了Flash player了,它能自动更新,可以在Windows、Mac和Lunix上运行,是发布后升级最迅速的软件产品(前提是用户接受新版本)。

小结:如果微软在这些方面继续改进,Silverlight会有非常大的潜力。不幸的是,我看到他们动作缓慢。Adobe仍大规模的领先,在实用性和普及率方面。

开发工具

我看过Expression suite,它给我留下了深刻印象,微软对它做了很大的改善。他们从Adobe的成功中学习长处并改进了其缺点。微软有许多开发实用开发工具的经验,这在它们的Expression工具中就可以看出。在这方面,Adobe并没有太多创建开发工具的经验。微软正在对Expression进行更新。Adobe也在做着一件深远的事,就是集成他们的开发工具创建一个凝聚性的工作流。

从另一个角度,微软并没有开发设计工具的经验,事实上他们对设计者还不够了解。他们的工具只能在Windows平台上使用,这从一开始就切断了一半的设计者市场。在今年的微软MIX大会上,一位参会者在会间询问Lynda(Lynda.com站长),如果设计者们熟悉Expression后将如何转到Windows平台上去。她回答说她自己就是个Mac用户,但她不会转到Windows上去。我为Lynda的诚实鼓掌,我相信这也清楚的证实了微软要想让抵制者们改变原来的工具并不是一件容易的事。

小结:微软将会建立更完善的开发工具集,并提供更佳的集成工具。但是,他们事实上是不愿意支持Macs的,他们并不能深入的理解创造性和设计者是他们的要害。Adobe对创造的流程有很深入的理解,它们对跨平台的支持性是微软不能比敌的。

未来趋势

虽然很容易被忽视,但这是一个非常重要的问题。为什么微软会构造Silverlight?微软的长远意图是什么?现在主要猜测是用来抢占Flash的RIA应用市场,但根据过去的观察,微软的行动一直很稳健,我想这一次也不会例外。

微软因为其经 常会在一项技术已被事实证明是成功后,再进入这个领域而臭名昭著,他们会扔进大量的金钱逐渐去扼杀竞争,一旦形成垄断,技术的发展就会遇到很大的阻碍。微 软也经常会因一时的怪念头而放弃对跨平台特性的支持。确实,他们提供的很多跨平台产品到最后都会因为某种冠冕堂皇的理由被抛弃或半途而废(MAPI in Entourage, IE, VBScript in Office, Windows Media versioning and DRM, heck, 甚至Halo)。

Adobe也不是慈善家,但他们已经证明自己的产品能够成功的支持跨平台特性,即使在交互式WEB页面开发上真正意义上的竞争者并不多,但Adobe一直在对产品进行改进。Silverlight会迫使他们做的更好。举个例子,如果没有Silverlight的出现,我们能否如此快的在Linux上看到Flash player9也将会是个疑问。

小结:如果消灭掉了Flash,继续追求跨平台特性就不会是微软最佳利益的选择了,也很难保证持续对其革新。做为一个长期的Mac用户,我真的不能相信微软的意图,但是看到在Silverlight的压力下Adobe的持续改进也是一件另人高兴的事。

结论:总的说来,我相信Silverlight的潜力,尤其在短期内微软砸进大量金钱的效果会比较明显。在不远的将来,微软的开发工具也可能会更加健壮,比起Adobe提供的工具有更高的集成度,但是仅仅支持Windows平台的特性会让大量的开发者和设计者与Silverlight保持距离。我相信Silverlight接口将会是一个合适的运行时程序,但它不会象Flash player那样打包到用字节计算,也决不会达到象Flash那样的安装普及率。

2007-04-21

Flash是否发展到极限了?

以前写过一篇文章Flash CS3 = Flash 8 + AS3.0 + CS3 UI ? 今天真正用了一下,彻底让我失望。
  1. 实在是太大了,1.2G!有点难以容忍。
  2. 代码编辑功能太差,跟Flash 8差不多,跟FlexBuilder差远了。
  3. 将动画转换为XML,好像只能在Flash里用(无法在Flex里用)。
  4. 用户界面组件,比Flex的差太多,大概为Flex的简化版。
  5. 丰富的绘图功能,DrawingObject却不在了。
  6. Adobe 界面,可以说没有实质的改变。
只有fl.*package有点动心。 看来以后只有flash + flex结合了:(

2007-04-13

Flash Player 9 更新

Flash Player 9 更新了。最新版是 9.0.45.0 ,拥有Win版和Mac版。 主要目的为对应将要发布的Flash CS3 Professional。修正了以下项目:
  • Flash CS3 Professional 的新的AS3组件不能正确工作。
  • 用gotoAndStop等帧移动来生成的AS3的对象有可能不能正常工作。
  • AS3用的RuntimeShareLibrary(RSL)执行时出现安全性错误。
  • flash.text.TextField.getCharBoundaries的返回领域会向左移2px。
更详细的问题的解说在以下的Technote。(为英文)

2007-03-28

Flash CS3 = Flash 8 + AS3.0 + CS3 UI ?

Flash的新功能有:
  • Native Photoshop and Illustrator import(能够无间隙地倒入psd和ai文件)
  • Powerful integration with Illustrator CS3(能够与Illustrator集成,类似于Flash与Fireworks的关系)
  • Convert animation to ActionScript 3.0(把动画转为代码,我想大楷为Flex2的吧)
  • Common Adobe Creative Suite 3 user interface(CS3通用的用户界面)
  • ActionScript 3.0 development with advanced debugger(AS3.0开发环境与高级调试环境,但它能超过基于Eclipse的FlexBuilder2吗?)
  • Adobe Device Central(一个为手机开发的环境)
  • New drawing tools(新的画图工具)
  • New optimized and easily skinned UI components for ActionScript 3.0(新的UI组件,我想可能类似于Flex2的)
  • Advanced QuickTime export(高级视频导出,能将AS实现的部分也导出)
  • Sophisticated video encoding(更好的视频编码)
  • Time-saving programming tools(自动存盘工具)
我唯一认为好的是AS3.0开发环境与高级调试环境其他的我认为可要可不要。Flash player没有改变,意味着表现能力没有改变。也就意味着Flash CS3 = Flash 8 + AS3.0 + CS3 UI 。Adobe不愧是搞平面设计的,增加了大部分与老Adobe工具的集成和设计的工具,但没有增加任何像Flash 8带来的那种惊喜的功能(比如Flash 8的位图)我期待的3D,多线程,overload何时到来? AS3.0,在flex2中已用过,已经没有什么新鲜了。 虽然我还没有用Flash CS3不知道到底怎样,但已经有点让我失望,我不希望Flash8是MM最后的疯狂。CS3只是加强了IDE罢了。我希望能有更好的功能,至少在Flash CS4里。
*本人英语能力很有限,可能有理解错误,请指出