众所周知,Flex明显区别于传统B/S开发模式的特性中,有一条为在Flex中已经再看不到页面的跳转会伴随URL的变化了,但在实际应用中,我们会遇到,我们给朋友介绍自己Flex做的网站的某个亮点时候,没法具体定位到某个模块部分(传统的html/jsp/asp/php等是可以做到的),而且传统页面还可以通过浏览器的向前和向后按钮实现浏览历史回退功能,而我们的Flex默认并没有此功能,这无疑在用户体验上为Flexl/Flash应用添上了不雅的一笔。我们都是凡人,所以我们能够发现的问题,前人也一样可以发现,我们Flex的设计者早已为我们做好这方面的考虑。当然官方给我们的解决方案不一定是最好的,一旦你觉得用的不爽,便可以自己架锅,进行DIY. asual(http://www.asual.com/swfaddress/)为我们提供了比官方更为完美的解决方案(个人观点)。我们今天重点讲asual提供的SWFAddress解决deep link问题。
  一:官方解决方案
  1.HistoryManager
  HistoryManager功能在Flex项目中是默认打开的,比如在使用Accordion 和 TabNavigator组件时,在不同区域切换时,Flex会自动记录下各个状态,对于其他组件如果你要用它则需要:
  a.实现mx.managers.IHistoryManagerClient接口。
  b.用HistoryManager'的register()方法为组建注册。
  c.当组件状态改变时保存组件的状态。
  d.通过实施IHistoryManagerClient的saveState() 和 loadState()方法来保存和读取组件状态。
  2.BrowserManager
  BrowserManager是区别于HistoryManager的另一种实现deep link的方式,二者不能共存(只能用一种)。它的使用方法为:
  a.init(fragment,title)
  该方法可以定义默认的链接参数和网页标题。一般在初始化时用到。例如:
  browserManager.init("", "Test Deep Linking");定义了参数为空,标题为Test Deep Linking的网页。
  b.setTitle(title)
  该方法用来设置网页标题。例如:
  browserManager.setTitle("The New Title") 设置网页标题为"The New Title"。
  c.setFragment(fragment)
  该方法用来设置网页参数。例如:
  browserManager.setFragment("id=3") 设置参数"id=3"。
  这两个不多介绍了,请参考:http://xinzy.javaeye.com/blog/474778; http://riaoo.com/?p=8;
  二:SWFAddress解决方案
  这种方式难度不大,个人感觉它用起来比官方提供的解决方案简洁很多。主要有SWFAddress.as、SWFAddressEvent.as两个文件as文件以及swfaddress.js、swfobject.js两个js文件。具体用法如下:
  1.监听SWFAddressEvent.CHANGE事件,调用SWFAddressEvent.setValue(),在SWFAddressEvent.CHANGE事件的监听函数中作视图更换: Flex URL Test"; private function initApp():void { SWFAddress.addEventListener(SWFAddressEvent.CHANGE , handleSWFAddress); } private function handleSWFAddress(event:SWFAddressEvent):void { var temp:String = event.value; switch(temp){ case "/label1": tileURL = "yi"; break; case "/label2": tileURL = "2"; break; case "/label3": tileURL = "san"; break; } SWFAddress.setTitle(temp.substr(1,temp.length)); } private function butnClick(event:MouseEvent):void { var lstr:String = event.target.label; var temp:String = ""; switch(lstr){ case "label1": temp = "lable1/view1"; break; case "label2": temp = "lable2"; break; case "label3": temp = "lable3?pame=natian"; break; } SWFAddress.setValue(temp); } private function test():void { trace("getBaseURL : "+SWFAddress.getBaseURL()); trace("getPath : "+SWFAddress.getPath()); trace("getPathNames : "+SWFAddress.getPathNames()); trace("getParameterNames : "+SWFAddress.getParameterNames()); } ]]--> width="300" text="{tileURL}" fontSize="30"/> 2.在index.template.html中嵌入swfaddress.js、swfobject.js练个js文件。注意这两js文件一定要写在嵌入swf代码的前面,否则加载swf时需要的js文件还未加载,会导致结果得不到相应,我恰恰因为这样困扰了3-4天:
  
  参考文档:http://www.asual.com/swfaddress/
  Ok,congratulations,when you come to this step,you can make you Flex applicaton has different URL among the different models,and you aslo can use the back or farword function of the browser.GOOD LUCK!

SWFAddress实现Flex深度链接(不同模块具有不同的URL)相关推荐

  1. iOS app集成使用 Facebook 深度链接

    facebook深度链接文档以及测试工具:https://developers.facebook.com/docs/app-ads/deep-linking​​​​​​​ 1.首先需要集成facebo ...

  2. dnn神经网络_OpenCV3.3深度神经网络(DNN)模块

    今天,甜菇凉整理了一下电脑里面OpenCV深度神经网络(DNN)模块-应用视频教程,这个是贾志刚老师的视频,学习视觉的同学应该都知道贾志刚老师吧,他的视频很适合想要入门计算机视觉图像处理的小白学习,那 ...

  3. Android:从零开始打造自己的深度链接库(一):ARouter简介

    前言 原计划这是一个系列的收费文章,2块钱买不了吃亏买不了上当,结果没想到预订人数还没到10人,略微有些尴尬.虽然结局不太完美,但是也反映出大家的水平大部分都在这篇文章的水平之上了,我也可以把文章拆分 ...

  4. 贾志刚OpenCV3.3深度神经网络DNN模块应用学习笔记

    OpenCV3.3深度神经网络DNN模块应用全套视频.课程配套PPT的PDF版本和配套源码 全套例程源码.用到的模型文件.图片和视频素材整理 在线观看 实例1:读取单张PNG文件(opencv3.3环 ...

  5. 所谓深度链接(Deep linking)

    是为那些非Html页面应用而给定的一种关于URL定位的描述. 例如,在一个网页里,如果有"Home"."About Us"和"Contact" ...

  6. 在 iOS 与 Android 上实现 React Native 应用深度链接,通过 URL 打开到指定页面

    在 iOS 与 Android 上实现 React Native 应用深度链接,使得应用可以通过 我们生活在一个万物兼可分享的年代,而分享的过程,几乎最终都会分享某一个链接,那么,作为开发者,最常遇到 ...

  7. Windows Phone 7(WP7)开发 自订磁贴(深度链接)

    用过Wp7手机的同学应该都对内置的Office印象深刻,每一个文档的图标长按会出现一个菜单,能够"固定到开始屏幕",固定到开始屏幕的那个图标,点击之后,会直接打开该文档内容. 又如 ...

  8. Deeplink(深度链接)唤起App,怎样实现无缝跳转

    移动互联网时代,信息的分享传播无疑是 App 引流增长的关键,与其花费大量精力和成本找渠道.硬推广,不如从细节下手,用最快最简便的方法实现 Deeplink(深度链接)技术,打破信息孤岛.缩短分享路径 ...

  9. 深度链接对社会化营销有哪些价值和作用?

    社交网络时代,微信.微博等社交软件被广泛应用于我们的生活,大部分的非社交软件都添加了社区分享功能,比如说爱奇艺的泡泡社区,互联网社交化的发展趋势,也影响着营销界,社会化营销也因此变成了营销推广中的一个 ...

最新文章

  1. AI工程师成长记 - 工作方法!
  2. signature=ecbb5c28a0561484700bbfeebe84cc52,Corps next in line as bond fees are hit by ECB
  3. 中国会计信息化的四级阶梯
  4. nginx 允许跨域_细谈跨域请求的桥梁
  5. spring mvc 接收List数组类型参数
  6. pca各个向量之间的相关度_PCA主成分分析
  7. js 判断浏览器是否64位
  8. python网络爬虫软件哪个好用_好好学Python,入门网络爬虫之精华版!
  9. 计算机视觉论文-2021-07-01
  10. 两轮差速机器人坐标系及运动轨迹描述
  11. GitHub增加了代码审查、项目管理等新功能
  12. Oracle DBA手记3:数据库性能优化与内部原理解析
  13. C# WinForm开发系列 - ComboBox
  14. 数据库系统概述之数据库的安全性
  15. 香农编码用matlab实验报告,香农编码实验报告
  16. 【整理】详解嵌入式片上资源之SDRAM内存
  17. 15年30亿设备,安卓如何从0到最大的操作系统?
  18. 天猫精灵打开电脑(网络唤醒)
  19. 群发邮件平台你知道那个好吗,一款邮件群发100万封群发邮件平台
  20. android 获取亮度,如何读取Android屏幕亮度/暗淡的实时,当前值?

热门文章

  1. Virual Studio 2022 C++ CLR 中 模拟 Android Studo,Eclipse 的 LogCat
  2. 计算机应用基础图文混合排版,《Word 2010图文混合排版》教学设计与课后反思
  3. 天视通支持海康威视摄像头吗_海康威视突然做电脑,到底有胜算吗?
  4. python中判断生肖和星座哪个准_十二生肖PK十二星座,到底哪个更准?
  5. abd连接手机的三种方法
  6. 电脑无法使用typec耳机
  7. 如何综合掌握 DB2 和 Informix
  8. TensorRT(7):python版本使用入门
  9. Python编写的命令行版微信。(已集成自动聊天机器人(通过网址api形式))
  10. vim报错E45: ‘readonly‘ option is set (add ! to override)