用幾十行代碼寫一個可以在PC Web,PC桌面,安卓,iOS上運行的程序


 有一種撤退不叫撤退,叫戰略轉移。
 如果你想盡快的開發一款應用,並且將它發布到盡量多的用戶手中,Flash是目前的最佳選擇。
 很多人對Flash的認識僅限於網絡動畫、視頻播放,卻不知道,不知不覺之間,Flash已經成為了一個軟件開發平台。下面,演示一下用這個軟件開發平台開發一個demo應用,並將它以多種形式發布。
 這個演示只是給讀者一個直觀認識——Flash的優勢是什么。
 ====
 開發一個等待的動畫(一個圈,轉啊轉),這個動畫要能夠在PC機瀏覽器上看,也可以下載下來到本地看,也可以在Android平台上看,也可以在iOS平台上看。(Linux等由於用戶群太小,忽略了,雖然,也能做到)。
 下面是我寫的動畫控件(AppleStylePreloader,用的我自己的控件解決方案):

View Code
 1  <? xml version="1.0" encoding="utf-8" ?>
 2  < common:BaseContainer  xmlns:fx ="http://ns.adobe.com/mxml/2009"  
 3                        xmlns:mx ="library://ns.adobe.com/flex/mx"
 4                        xmlns:common ="geb.common.*"
 5                        width ="0"  height ="0"  
 6                        xmlns:controls ="geb.controls.*"
 7                        xmlns:shapes ="geb.shapes.*"  inited ="onInited()"
 8                         >
 9      < fx:Script >
10          <![CDATA[
11              private var timer:Timer;
12              private var slices:int = 12;
13              public var radius:int = 11;
14              public var timerDelay:int = 100;
15              public var sliceColor:uint = 0x333333;
16              
17              private function onInited():void
18              {
19                  var i:int = slices;
20                  var degrees:int = 360 / slices;
21                  while (i--)
22                  {
23                      var slice:Shape = getSlice();
24                      slice.alpha = Math.max(0.2, 1 - (0.1 * i));
25                      var radianAngle:Number = (degrees * i) * Math.PI / 180;
26                      slice.rotation = -degrees * i;
27                      slice.x = Math.sin(radianAngle) * radius;
28                      slice.y = Math.cos(radianAngle) * radius;
29                      box.addChild(slice);
30                  }
31                  timer = new Timer(timerDelay);
32                  start();
33              }
34              
35              public function start():void
36              {
37                  stop();
38                  timer.addEventListener(TimerEvent.TIMER, onTimer, false, 0, true);
39                  timer.start();
40              }
41              
42              private function getSlice():Shape
43              {
44                  var slice:Shape = new Shape();
45                  slice.graphics.beginFill(sliceColor);
46                  slice.graphics.drawRoundRect(-1, 0, 4, 14, 4, 4);
47                  slice.graphics.endFill();
48                  return slice;
49              }
50              
51              private function onTimer(event:TimerEvent):void
52              {
53                  if(box != null)
54                      box.rotation = (box.rotation + (360 / slices)) % 360;
55              }
56              
57              public function stop():void
58              {
59                  if(timer != null)
60                  {
61                      timer.removeEventListener(TimerEvent.TIMER, onTimer);
62                      timer.stop();
63                  }
64              }
65              
66              public override function close():void
67              {
68                  stop();
69                  super.close();
70              }
71           ]]>
72      </ fx:Script >
73      < common:BaseContainer  id ="box"  x ="{width * 0.5}"  y ="{height*0.5}"   />
74      </ common:BaseContainer >

 1:PC Web發布
 建立一個Flex Web項目,代碼:

     <? xml version="1.0" encoding="utf-8" ?>
     < common:Application  xmlns:fx ="http://ns.adobe.com/mxml/2009"  
                   xmlns:mx
="library://ns.adobe.com/flex/mx"  
                   xmlns:common
="geb.common.*"  width ="300"  height ="300"
                   xmlns:preloaders
="geb.preloaders.*"
                   
>
         < preloaders:ApplyStylePreloader  x ="{width*0.5}"  y ="{height*0.5}"   />
     </ common:Application >

 編譯得到的Flash不到20K大小。演示如下:

 2:桌面發布
 建立一個Flex AIR項目,代碼:

<? xml version="1.0" encoding="utf-8" ?>
< s:WindowedApplication  xmlns:fx ="http://ns.adobe.com/mxml/2009"  
                       xmlns:s
="library://ns.adobe.com/flex/spark"  
                       xmlns:mx
="library://ns.adobe.com/flex/mx"  
                       xmlns:containers
="geb.containers.*"
                       xmlns:preloaders
="geb.preloaders.*"
                       width
="300"  height ="300" >
     < containers:FlexUI  width ="{width}"  height ="{height}" >
         < preloaders:AppleStylePreloader  x ="{width*0.5}"  y ="{height*0.5}"   />
     </ containers:FlexUI >
</ s:WindowedApplication >

 編譯,發布一下,直接把AIR集成進去,就得到一個綠色軟件:

 全部文件大小30多M,壓縮成zip后為17.8M。運行:


 3:Android平台和iOS平台
 建一個Flex 移動項目,代碼:
<? xml version="1.0" encoding="utf-8" ?>
< s:Application  xmlns:fx ="http://ns.adobe.com/mxml/2009"  
               xmlns:s
="library://ns.adobe.com/flex/spark"  
               xmlns:containers
="geb.containers.*"
               xmlns:preloaders
="geb.preloaders.*"
               applicationDPI
="160"
               
>
     < containers:FlexUI  width ="{width}"  height ="{height}"   >
         < preloaders:AppleStylePreloader  x ="{width*0.5}"  y ="{height*0.5}"   />
     </ containers:FlexUI >
</ s:Application >

 Debug,可以看到模擬器,iOS的,Android的,BlackBerry的,五花八門的,  隨便選一個iPhone 3GS,運行:


 導出安裝包,iOS的我沒帳號,就只導出Android的了,導出后的文件大小為9M(把AIR打包進去了)。
 演示完畢。
 ====

 少年們,知道什么是Flash了吧。就不再總結了,優點,上面Demo已經一目了然了。缺點嗎,也不說了,會有人補充的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM