当前位置: 首页 > news >正文

怎样成为一个Flash Lite Developer (开发篇)

作者:luar

原文链接:http://www.luar.com.hk/flashbook/archives/001228.php

要開發Flash Lite內容,大部分人頭痛是那Flash 4語法,對於資深Flash開發者來說,Flash 4不難寫,程式設計美麗的地方,就是同一個需要,有很有多不同寫法,窮則變,變則通。相反,在手機上跑的東西,效能和記憶體佔用才是最大困難所在,往往就是要開發者用智能去克服效能的問題。所以,Flash 4語法是門外的人看以為的問題,克服效能才是平日Flash Lite開發者奮鬥的目標。

好了,廢話說完。Flash Lite ActionScript是怎樣?就是Flash 4 ActionScript、編譯器幫助下一些Flash 5指令、手機屬性和FSCommand2。

Flash 4 ActionScript

包含以下東西:

  • 影片(play, gotoAndStop, loadMovie等)
  • 變數定義set("varName", varValue)
  • while和if
  • Movie Clip控制getProperty和setProperty
  • 一些String簡單操作(length,substring)等
  • 路徑語法(tellTarget, /, ../, :)
  • loadMovie, loadVariable

注意:不支援startDrag, stopDrag, _dropTarget, soundBufTime, _url和String()轉換。

Flash 5 Object

在Compiler幫助下,有一些Flash 5指令可以用,它們在編譯時,轉為Flash 4語法,包括:

  • 更多邏輯判斷(for, do while, switch)
  • _root, _parent
  • MovieClip.屬性=n,留意關於Movie Clip語法,只限在讀取和修改屬性上,如果要控制MovieClip播放或跳幀,仍然要用tellTarget
  • 變數定義可以直接用varName = varValue

手機屬性和FSCommand2

這些都是一些取得手機資料,和控制手機(例如震動、發SMS等)的指令,如果平常用Flash Lite開發遊戲,比較常用的有:

  • 震動:fscommand2( "StartVibrate", time_on, time_off, repeat),fscommand2("StopVibrate");(有些手機不支援震動,例如:Nokia 7610, N-Gage)
  • 全熒幕:fscommand2("FullScreen", true);(只有Standalone Flash Lite Player支援,例如Nokia手機;在Browser裡執行的不支援,例如Sony Ericsson手機)
  • 功能鍵名字設定:fscommand2("SetSoftKeys", "Start Game", "Quit");(即熒幕左右下角出現的字眼,在非全熒幕時才看到)

由Flash 4 Port到Flash Lite

開始編程Flash Lite時,往往由以前的Flash 4東西開始,例如將以前的東西改為Flash Lite版,在這些轉移過程中,要注意的地方:

  • 手機沒有滑鼠,所以所有靠Click操作的東西,要想辦法改為鍵盤
  • Flash Lite自動支援方向鍵去由一個按鈕跳去另一個按鈕,同時將該按鈕顯示在Over狀態,十分方便。開發遊戲時常用,例如主畫面有「開始遊戲」、「載入遊戲」、「離開」,用方向鍵就可以上下控制。注意一:有些手機不支援Four Way Navigation with wraparound,即「離開」按「下」不可以直接跳到「開始遊戲」,在Flash Pro 8的Flash Lite Emulator會提示那手機是否支援。注意二:通常在主畫面,想預設「開始遊戲」在Over狀態,但如果只靠Flash Lite的按鈕自動用方向鍵控制,是沒法做到,加上正因為注意一,想做一個可以wraparound的選單,我還是用Movie Clip和自行捕捉方向鍵來做主畫面的選單
  • 影片大小,通常先考慮Symbian 60大小,即全熒幕有176x208
  • 一般手機效能只有8-10fps,遇到有alpha漸變時,會再慢一點
  • 文字一定要用Pixel Font才能夠清晰,文字x, y位置一定要是整數
  • SWF檔案大小目標在100Kb內
  • Flash Pro 8的Flash Lite Emulator基本上可以模擬手機大部分操作,除了關於手機屬性和FSCommand2控制手機硬體,特別注意Emulator不能模擬效能,所以它比手機跑得更順和不知道耗用記憶體的問題,所以測試效能和記憶體消耗,一定要回到手機測試
  • 在Frame 1加_focusrect = 0,可以消除控鈕焦點時的黃色邊框
  • 沒有Delete可以用來刪除變數,只好將它改為var=""
  • String連結要用add,不可以用+
  • 使用Bitmap圖,先在Photoshop進行優化壓縮,例如減少顏色至8/16/64色可以大大減少File Size,避免出現Problem with content: 6錯誤(Bad JPEG data,JPEG圖檔太大)
  • fscommand2("SetSoftKeys")可以因為遊戲或應用不同狀態,在該處Frame使用,即可以不停改變功能鍵名字
  • 有些手機不能支援連續按鍵(即按下不釋放),例如:SonyEricssion Z800i
  • 方向鍵、Enter、PageUp、PageDown基本上是常用,我會做好一個Flash Template,Stage外有7個透明按鈕(只定義了Hit Frame),加入了on (keyPress "...") {...}
  • 我發現很多Flash Lite範例都沒有聲音,這方面跟平常Flash做法很不同,所以比較少人涉獵?我會在下一篇詳細再講

相关文章:

  • Chat room help file
  • 小程序 - 使用async出现regeneratorRuntime is not defined错误 不能使用async 和await 的解决方案
  • react willReceiveProps 是深度比较 浅层拷贝 (虽然值变过来了 但是)还是会render 一次 immutable1
  • 怎样成为一个Flash Lite Developer (工具篇)
  • immutable与可变数据 不可变数据
  • 辞职:也要像个君子般离开
  • redux connect 原理解析 传入的mapstate 和mapdispatch connect()第一次执行后返回一个函数 这个函数接收到的参数是一个组件 对组件进行加工返回
  • Flash Lite 与 J2ME 分析比较
  • react dva 复习subscriptions: setup
  • pm2 pm2 --help 使用指南
  • 驳斥一些不看好Flash的观点
  • eruda . 移动端console输出日志调试工具
  • referer
  • 2006年3GSM全球大会10佳手机
  • H5 postMessage方法 以及监听
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 2017 年终总结 —— 在路上
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Android系统模拟器绘制实现概述
  • avalon2.2的VM生成过程
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • ES10 特性的完整指南
  • extjs4学习之配置
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Iterator 和 for...of 循环
  • js面向对象
  • Less 日常用法
  • Python学习笔记 字符串拼接
  • Spring Cloud中负载均衡器概览
  • 阿里云应用高可用服务公测发布
  • 闭包,sync使用细节
  • 如何使用 JavaScript 解析 URL
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • Java性能优化之JVM GC(垃圾回收机制)
  • Spring Batch JSON 支持
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #100天计划# 2013年9月29日
  • #DBA杂记1
  • #宝哥教你#查看jquery绑定的事件函数
  • (1)(1.13) SiK无线电高级配置(六)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (52)只出现一次的数字III
  • (C语言)字符分类函数
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (九)c52学习之旅-定时器
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一一四)第九章编程练习
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .NET 8.0 中有哪些新的变化?
  • .NET BackgroundWorker
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET精简框架的“无法找到资源程序集”异常释疑