Adobe Flash Builder 4 简体中文正式版 Windows版点击下载:http://g.csdn.net/5134151

  Adobe Flash Builder 4 简体中文正式版 Mac版点击下载 :http://g.csdn.net/5134152

  Adobe 在线课堂:http://adobev.csdn.net/zx/index.html

  Adobe平台技术峰会课程视频:http://adobev.csdn.net/ 深链接:是通过URL 控制你的程序的初始视图的能力;

  分析:收集关于用户如何与程序互动的数据。

  关于Flash 和Flex 的两个共同的误解就是:在你的程序和游戏中,加入深链接和收集分析数据功能是不可能的,或者说是非常之难的。不过,事实并非如此。几行代码就可以实现这个要求了。

  在本文中,我会介绍SWFAddress 和SWFAddress ,及你为什么会想要使用这两个工具,最重要的是,如何在你的程序中添加它们。

  我将于2010 年9 月19 日到21 日在360Flex 大会上探讨这个话题。我想,使用SWFAddress 和Google Analytics 构建一个定制化幻灯片灯会很合适-右击获取源代码。

  注意:移动你的鼠标到程序的左边,显示导航。或者你可以使用鼠标手势,按下左鼠标键,左右移动,前后移动幻灯片。还有一个功能就是,程序还可以处理触控事件(这一点在代码中就完全涉及到了)。

  随着你浏览一张张幻灯片,你会注意到URL 和页面标题出现变化,以反映现在播放的幻灯片。程序还向Google Analytics 发送数据。我提供了一个公共的Google 账户,每个人都可以登陆上去,浏览幻灯片灯箱收集的分析数据-本页面的最后提供了细节。从Google Analytics dashboard 上,你会看到独特的浏览者,页面浏览量,网站平均访问事件,图层叠加用户地址等。

  为什么添加深链接

  不是每个Flex 程序都需要添加深链接。但是在很多情况下,它能够加强UX (用户体验),因此值得你稍微费点功夫将之添加进来。譬如,我的网站RunPee.com -这个网站告诉人们,看电影的时候,什么时间是最佳洗手间时间,这样你就不会错过任何精彩片段。网站很简单。有一个电影导航,向用户显示选定的电影的"洗手间时间"。假设你登陆了该网站,想要向一个朋友发送邮件或者告诉其他人某部影片(如Inception )的洗手间时间。没有SWFAddress 的话,你只能让你的朋友登陆主页,然后她们自己在导航中寻找Inception 。但是因为我在网站使用了SWFAddress ,你可以向你的朋友发送一个链接,从此链接,你的朋友可以直接连接到你想要她们观看的影片,如http://runpee.com/#/Inception-region-US-lang-EN-ke y-121 。

  它还能启动浏览器前进后退按钮和刷新,并且能够给你的程序的特定视图添加书签。这些都是很多用户认为Flex/Flash 程序缺少的。

  注意:如果你使用SWFAddress ,发现它很有用,那就在Asual 的donation bucket 里说几句感谢的话吧。

  为什么添加analytics (分析)?

  当然,你想要知道用户是如何使用你的程序的。你可以仅仅就在程序的HTML 容器里嵌入Google Analytics Javascript 代码,但是那只会提供有关主页的数据。你不能知道人们到底如何使用你的程序的,除非你向Actionscript 代码添加跟踪。

  你不想知道在中国,到底有多少人在使用你的程序吗?

  在一个HTML 网站,每次当你从网站上载一个页面的时候,Google 服务器会更新,Google Analytics 运行。在Flex 程序里,就有些不同了。你得告诉Google 服务器,你要求什么作为网页浏览量,并且发送更新数据。最棒.给你的Flex程序添加深链接和分析-其实比你想象的要简单 .的就是,它可以让你全权控制你想要跟踪的内容。你可以,譬如,添加跟踪,当用户观看一部视频时,每隔十秒ping 一下Google 服务器。这样,你可以了解到人们看视频时,会看到哪里选择离开。或者,你可以向一个游戏添加跟踪,看看人们在打到多少级时,放弃。你可以因此确定哪一级对玩家来说太难了。

  你还可以根据你的喜好,定义网页的格式。你可以做一串数据,采用任何格式,然后发送到Google 。在这个视频使用跟踪范例里,我可能会发送这样一个内容到Google "、名称-我的视频名-秒-40-213"也就是,我的视频名称,用户观看的秒数,和视频的全部时间(秒)。现在,在Google 上浏览数据时,我可使用过滤器选出我想要查看的信息。

  另外一个收集分析数据的重要原因就是,哪些国家的大部分用户会选择你的程序。譬如,如果你有个游戏产品,发现它在中国很受欢迎,你想要将部分内容翻译成中文,从而提高在该地区的受欢迎度。如果你想要本地化你的程序,你需要根据用户跟踪了解哪个语言是最佳选择。

  此外,你可以获取关于运行你的程序的硬件的信息,如Flash Player 版本,浏览器类型,屏幕清晰度,OS 类型等。这些数据对于更新你的程序都非常重要。

  注意:这里用Flex 程序举例说明,而实际上SWFAddress 和Google Analytics 在纯粹的Actionscript 项目里运行良好。

  SWFAddress如何运行

  首先,你需要从Asua.com 获得SWFAddress 代码-这是免费的开源代码。你需要两样东西:在你的项目libs folder 中的swc ,和你放在服务器上通过HTML 容器装载的swfaddress.js 文件。

  你会要更新Flex 项目的index.template.html ,以上载JavaScript 文件。代码行在上载了swfobject.js 文件之后运行正确。所以,你的HTML 代码就是这样: <mce:script type="text/javascript" src="swfobject.js" mce_src="swfobject.js"></mce:script> <mce:script type="text/javascript" src="swfaddress.js" mce_src="swfaddress.js"></mce:script> 关于SWFAddress 的几点:

  SWFAddress是一个静态类。你不需实例化它。

  你需要向SWFAddress 添加一个监听器,这样就可以了解它什么时候发生了变化。但是你可以只添加一个监听器。更为精确地说就是,你可以按照自己的要求添加N 个监听器,但是只有最后添加的那个会被触发。现在,在你的程序里,你需要监听SWFAddress.CHANGE 事件,如下所示:

  SWFAddress.addEventListener( SWFAddressEvent.CHANGE, onSWFAddressChange );

  然后,事件控制如下所示: private function onSWFAddressChange( e:SWFAddressEvent ):void { if( SWFAddress.getPath() == "/" ) { // set view to homepage } else if( SWFAddress.getPath().indexOf( 'something_' ) != -1 ) { // set view to something } } 然后,事件控制如下所示:

  SWFAddress.setValue( 'something' );

  你可以告诉SWFAddress 在程序内任何位置更改url 。但是,我根据经验认为,你可能不要这么做。假定你做了,稍后又决定你想要改变URL 的格式。你可能会在程序内不同的位置进行跟踪,在这些位置,可能设定了该URL 。我发现最好的方法是拥有一个静态文件,它会处理所有的SWFAddress 更新。因为你只有一个用于SWFAddress 的监听器,我使用InBox/OutBox 来做个比方吧。InBox 类监听的是变化,而OutBox 却执行了所有的setValue 更新。用这个方法,我的InBox 类只有两个静态方法。一个就是设置监听器,当然还有用于该监听器的handler( 子线程监听器) 。我从程序creationComplete handler. 中调用InBox.init() 方法。 package model { import com.asual.swfaddress.SWFAddressEvent; import com.asual.swfaddress.SWFAddress; public class InBox { public static function init():void { SWFAddress.addEventListener( SWFAddressEvent.CHANGE, onSWFAddressChange ); } private static function onSWFAddressChange( e:SWFAddressEvent ):void { if( SWFAddress.getPath() == "/" ) { // set view to homepage } else if( SWFAddress.getPath().indexOf( 'something_' ) != -1 ) { // set view to something } } } SWFAddress不仅仅限于更改URL 。你还可以使用它更新页面的标题,这样有助于用户决定是否给视图需要添加书签。

  使用SWFAddress 时,最重要的是你需要确保你的程序必须只依赖于对SWFAddress.CHANGE 事件的反应,以更改视图。譬如,你不能再将ButtonBar 与ViewStack 连接起来,改变ButtonBar 以更改ViewStack 的selectedIndex 。相反,ButtonBar 将于,如OutBox.buttonBarChanged( s:String ) 方法通讯。这个方法会通过WFAddress.setValue( s ) 更ViewStack 。下面简单说明下这个流程;.

  

  在上面这个例子里,InBox 不能直接与ViewStack 通讯。实际上,你可能会从InBox 派遣一个事件,以与ViewStack 通讯。

  你可以清楚地看到,在程序中使用SWFAddress 起来很简单,但是把它添加到现有的一个程序中可能也非常令人头疼-你的"里程数"可能会变动。因此,如果你想要以后使用它,要确保你从程序构建开始就将之添加进去了,这样你会轻松很多。

  它"中断"了什么?

  显然,SWFAddress 使用ExternalInterface 与Javascript 代码通讯。一个常见的问题是"如果Javascript 代码因为某种原因不进行上载或者ExternalInterface 在一个特定的浏览器中失败了,会发生什么?(你会说Safari ?)它会不会中断我的程序,阻止人们使用导航?幸运的是,答案是NO! SWFAddress 实际上并不依赖浏览器中URL 的改变来触发更改事件。当你使用setValue 时,它触发更改事件,然后试图更新URL 。如果它因为某种愿意不能运行,也没有什么大损失。

  如何使用Google Analytics

  如果你认为SWFAddress 很简单,那就等着知道你在Flex 或Actionscript 程序中尝试使用Google Analytics 吧(下载GAforFlash )。你所要做的就是创建一个GATracker 实例,你准备开始发送pageviews 到Google 。这次,我又发现只用一个静态类与Google 通讯,很有意义,这样你可以中心化格式及你想要进行的更改。

  下面是一个GATracker 的实例: var tracker:GATracker = new GATracker( FlexGlobals.topLevelApplication.stage, // DisplayObject 'UA-123456789-1', // Account Number 'AS3' // 'AS3' or 'Bridge' false // is in Debug mode? ) 第一个参数是DisplayObject ,如果你是在debug 模式,GATracker 可以用来显示关于它发送到Google 的反馈。第二个参数是你的账户号,在使用Google Analytics 建立账户时获得。(你不能使用这个代码,因为每个代码与特定的域相连)。第三个参数是一个串,你可以用来设置到 AS3 或Bridge 上。我使用AS3 。最后,你为debug 模式设置一个Boolean 。显然,你不想在debug 模式下公布你的网站。这只是为了进行测试。

  Bridge 或 AS3

  简而言之,这里显示的是Bridge 和AS3 模式的区别。Bridge 使用Actionscript ExternalInterface 与你在HTML 中的ga.js 模式通讯。如果你有一个Flash widget 内嵌在网页中,效果最佳。你会想要将widget 的分析数据与你已经跟踪的网站其它部分的分析数据混合起来。然而,如果你有一个程序,你想要单独跟踪它,你可能会要采用AS3 模式。在两种情况下,你的内嵌代码都应该向"always "设置allowscriptaccess 。

  在我使用GATracker 的项目中,我想要确保我在测试程序时,并没有向Google 发送数据。但是一旦发布了该程序,我还是不会忘记启用跟踪功能。为了streamline 该过程,我编写了一个简单的类,用于分析FlexGlobals.topLevelApplication.url 。如果程序在localhost 上运行,它就不会更新Google 。

  最后的代码如下所示: public static function update( path:String ):void { // If we are in development - on the localhost - then DON'T update Google Analytics. // This code below will only run on the production server. if( !AppURL.isLocalhost ) { // Initialized once. if( tracker == null ) { tracker = new GATracker( FlexGlobals.topLevelApplication.stage, 'UA-17962415-1', 'AS3', false ) } // Update Google Analytics. tracker.trackPageview( path ); } } 虽然Google Analytics 很简单,但是有时候还是有些麻烦的情况。我鼓励你阅读下Flash GA 跟踪指南,对功能设置有个完整的了解,遇到问题,就参考这些文件。

  SWFAddress 和 Google Analytics 两项都很强大,加起来就更为强大了。

  在一篇文章里,一起讨论SWFAddress 和Google Analytics 的原因就是,即便他们是相互独立的,他们还是互相构成了补充。如果你按照我的建议创建一个静态类,用于管理SWFAddress.CHANGE 事件-InBox.as - ,再创建另外一个静态类通过setValue 管理SWFAddess 的更新-OutBox.as ,那创建另外一个静态类,就更简单了-Analytics.as ,以更新Google 。在这个例子中,你会发现,大部分时间,即使不是所有的时间,你唯一需要调用Analytics 类的地方就是OutBox 类。在这个例子中,就是用户与你的程序互动。事件调用OutBox.as 中的某个方法,更改URL ,这就是我们可能想要传递给Google Analytics 的。

  Flex 4中的状态

  Flex4最棒的一点就是,它引入了一个很出色的功能-状态(千万不要以为Flex 2/3 的状态算得上是功能。应该尽力避免。)只要有可能,我会构建程序,在状态,URL 更改,和分析数据更新之间实现一对一的对应。如果你可以有效管理,你的开发过程就很开心了。当然,事情不是都这么简单,但是这个目标很不错。

  公共Google 账户

  我创建了一个与大家共享的Google 账户,有想要查看我构建的Slydes 程序收集的分析数据的,可以用这个账户。就是使用这个账户信息登陆Google 。(希望你不要随便更改此账户的密码。我自己本身是没需要再使用这个账户了。但是我愿意其它人开发使用Google Analytics Dashboard. ) 。

  用户名:AdobeFlexOpenDev

  密码: adobeflex4

  一旦登陆,你可以浏览Analytics Dashboard 。你能看到如独特的用户数量,pageviews, 图层叠加等信息。

  本文译自:http://insideria.com/2010/09/adding-deeplinking-an d-analyti.html

转载于:https://blog.51cto.com/netp312/572239

给你的Flex程序添加深链接和分析-其实比你想象的要简单相关推荐

  1. 添加流星链接代码_如何将永久链接添加到流星项目

    添加流星链接代码 现代Web应用程序没有理由没有永久链接(也称为"漂亮的URL"). 它们使用户更容易记住,对SEO十分重要,并且在与Meteor一起使用时,非常易于实现. 为了演 ...

  2. php 添加工信部链接,常见程序(wordpress,dede,discuz)网页下方添加备案号,添加链接跳转到工信部...

    应工信部备案要求,现在网站备案要求在网站页面下方添加备案号,并且备案号要求链接跳转到http://www.beian.miit.gov.cn/ 很多站长不知道怎么添加备案号和跳转,导致网站备案被退回, ...

  3. 微信小程序添加全景实例

    微信小程序添加全景实例 你好! 也许这是你第一次想在小程序添加全景,也有可能不是第一次.但是本Girl 添加全景有着很深的印象,特意用文章记录下来,方便自己记住,下面就来了解本Girl添加全景的惨痛经 ...

  4. 利用ida对程序的静态链接库进行处理

    用IDA进行反汇编时最怕遇到的就是跟踪到了程序静态链接的库函数中,看得一头雾水不说,还浪费了大量的时间.其实如果有符号表的话,看看函数名就知道大概功能了,再看看参数就可以pass了.本文以meterp ...

  5. 添加图标_图标变化、小程序添加到桌面...微信电脑版这些功能更新!

    乐清资讯全掌握! 打开"看乐清"微信公众号,点击右上角"-", 设为星标即可~ 全文字数:444 阅读时间:约2分钟 微信PC版更新啦!新版本有很多变化可以在通 ...

  6. 在Blazor中构建数据库应用程序——第6部分——向天气应用程序添加新记录类型及其UI

    目录 介绍 示例项目和代码 过程概述 数据库 CEC天气库 为记录添加模型类 添加一些实用程序类 更新WeatherForecastDbContext 添加数据和控制器服务 表单 WeatherSta ...

  7. HOOK大法实现不修改程序代码给程序添加功能

    [文章标题]: HOOK大法实现不修改程序代码给程序添加功能 [文章作者]: 0x18c0 [软件名称]: Scylla [使用工具]: OD.Stub_PE.ResHacker [版权声明]: 本文 ...

  8. go语言 html 5 gui,仅需简单 5 步,给你的 Golang 程序添加 GUI (使用 Electron )

    创建一个 Golang app 是一件简单又轻松的事情,但是有时候你想给你的应用锦上添花:创建一个 GUI! 在本篇文章中,我将通过使用 astilectron 工具中的 bootstrap 以及 b ...

  9. 秀米怎么添加附件链接,如Word、Excel、Pdf等

    今天公司的运营小妹问我,使用秀米编辑公众号文章时,怎么给推文添加附件链接.因为秀米属于第三方的编辑器,跟公众号原生编辑器还是不一样的,所以添加附件链接的操作也是不一样的.下面详细说一下吧,让大家对公众 ...

最新文章

  1. 我的第一个VUE示例
  2. 文档相似度的比较tf-idf lda lsi
  3. 怎么用python制作简单的程序-神级程序员教你如何用python制作一个牛逼的外挂!...
  4. 3.1.4 操作系统之内存的分配与回收
  5. 无需写代码!可一键生成前后端代码的开源工具
  6. 深入了解gradle和maven的区别
  7. Linux常用命令大全--有关磁盘空间的命令
  8. 【Floyd】灾后重建(luogu 1119)
  9. 数据库 | MySQL安装与配置
  10. Python制作AI贪吃蛇,细节、思路都写下来了!
  11. 黑客演化史:从20世纪60年代至今
  12. 从JSON示例数据生成Web应用程序代码
  13. 总结几个等价无穷小相关的关系运算
  14. WINDOWS下SQL2016安装
  15. 全国青少年软件编程等级考试标准 (预备级)1-4级
  16. 企业生产经营相关英文及缩写之(12)--Currencies 货币代码
  17. 金工计算机测试题,金工考试题精选.doc
  18. 10. 微型计算机常用的显示器有哪几类及其工作原理,四川自考07311《多媒体技术》全真模拟试题(十)...
  19. 细胞膜包覆的负载二氧化锰药物|透明质酸修饰红细胞膜包覆紫杉醇脂质液晶纳米粒(齐岳生物)
  20. 【算法】1.递归实现二分查找

热门文章

  1. 理解JavaScript原型链
  2. HDU 1251 统计难题 字典树/STL
  3. arcgis开发常用源码
  4. linux stat函数讲解
  5. otsu自适应阈值分割的算法描述和opencv实现,及其在肤色检测中的应用
  6. 五大存储模型关系模型、键值存储、文档存储、列式存储、图形数据
  7. QML自定义IP地址输入框
  8. 20-思科防火墙:Network Static NAT:网络静态NAT
  9. 什么是好的API设计?
  10. 介绍4种HTML5 Canvas库