基于ActionScript脚本的Flash读取外部数据的比较——香香

2024-02-01 09:40

本文主要是介绍基于ActionScript脚本的Flash读取外部数据的比较——香香,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要:基于ActionScript脚本的Flash可以读取外部数据,本文针对Flash直接读取XML文档、文本文件和Flash连接数据库的实现方法,进行了分析和比较,并得出Flash直接读取文本文件、XML文档比较适合小数据量、非动态更新的数据,Flash连接数据库的方法具有处理大数据量、支持数据动态更新维护的优势。

关键词:Flash,XML文档,ASP,数据库

 

1 前言

Flash是一款强大的交互式矢量动画设计软件,适用范围广、应用实体多(伍守意,2010),其导出的文件小,网络传输方便。基于Flash强大的ActionScript脚本,Flash可以灵活读取外部数据源(比如文本,XML文档,数据库等),但是Flash并不能直接读取数据库,这点限制了Flash项目的数据更新和维护。借助于ASP(Active Server Page)可以实现Flash对数据库的连接和数据管理和操作。本文对Flash读取XML文档、Flash读取文本和Flash连接数据库方法的实现方法进行了介绍和比较。

 

2 Flash直接读取XML文档的方法

2.1 Flash简介

Flash是美国Macromedia公司开发的一款矢量图形编辑和交互式动画制作专业软件。它同时支持影像、图片、视频与音效等多媒体形式,结合ActionScript和内置组件,可以制作出效果极佳的动画类作品,在程序UI设计中的应用也越来越广泛。

2.2 XML的概念

XML(Extensible Markup Language)是可扩展标记语言的简称。在不同的应用程序中,信息的格式和构造方法各有不同,这直接影响应用程序之间的信息传达,因此需要制定一种统一的信息格式。从本质上讲,XML就是这种为信息传达提供格式化和构造的方法,使得接收信息的应用程序(如flash等)能够从格式化的文件中轻松翻译和使用信息。

2.3 XML文档的结构

XML的语法简单,采用与HTML类似的标记、属性和值。不同的是XML没有HTML那些预定义的标记(比如<body>、<head>和<html>),而且XML中的标记是自己定义的,并不是从一个已有的标记名称库中取用的。

图1. XML文档的结构

如图1所示的XML文档中,每个完整标记对(比如<Name></Name>)称为一个节点,而每个XML文档只能有一个根节点(如上例中的<Persons></Persons>)。上例中的根节点又含有3个子节点(有3组相同的信息,就重复出现3个相同的XML子节点)。第一个子节点具有一个Name的节点名和张小芳的节点值。每个子节点中的Gender是该节点的属性,可选且个数不限,一般利用属性保存一些不必显示的信息,比如用户的ID等。

2.4 在Flash中使用XML

在Flash中使用XML时一般分为四个步骤:(1)在flash中建立XML对象;(2)从指定的XML文档读取数据并加载到XML对象中;(3)在XML对象的onLoad方法中读取节点的值;(4)在其他动作中使用这些数据。

(1)在Flash中建立XML对象。在flash中使用new方法新建XML对象,比如:var myXML=new XML()。

(2)将外部的XML数据加载到XML对象中。利用load方法读取外部XML文档,并加载到myXMl对象中。加载Address.xml(图2)的语句:myXML.load("Address.xml")。

图2. Address.xml的数据结构

(3)重写XML对象的onLoad方法函数。比如:myXML.onLoad=myonload,当load方法读取完XML的数据后,Flash会自动调用该函数。调用onLoad方法时,函数会自动返回一个参数success,如果加载XML文档成功,则success值为true;如果未收到该XML文档,则success值为false,这可以帮助程序捕获异常。在myonload函数中,通过XML对象的属性读取XML对象中的各节点数据,并将读取的数据存放到数组中,以备其他地方使用。比如:myXML. firstChild.childNodes[0].childNodes[0].childNodes[0].nodeValue,表示返回myXML对象中的第一个节点元素(根节点元素<AddressBook></AddressBook>)的第一个子元素节点(<Person></Person>)的第一个子元素节点(<Name></Name>)的第一个子元素的值。本例中的结果是返回:Mary。

(4)在其他动作中使用读入的数据,在此不详细阐述。

1.5 用xPath读取XML

我们发现,在使用XML对象本身的方法读取XML文档节点值时,读取的路径并不是件方便的事情。编写好的表达式中并不能反映出获取了什么信息,这也为程序员带来了困扰。

xPath是一门用于在XML文档中查找信息的语言,它使用包含元素和属性的路径表达式进行导航。这些路径表达式和我们常规的电脑文件路径表达式非常相似。xPath的内建函数超过100个,这些函数可用于字符串值、数值,日期和时间比较,节点和QName处理,序列处理,逻辑值等。

使用之前需要先导入xPath类,比如import com.xfactorstudio.xml.xpath.*。在XML对象的onLoad方法函数中利用xPath的类方法读取XML文档的数据。比如读取上例中的信息,输入这条语句:XPath.selectNodes(myXML, "/AddressBook/Person[1]/Name/text()"),返回的结果与上例相同:Mary。

 

3 基于ASP的Flash连接数据库的方法

3.1 ASP简介

ASP(Active Server Page)是Microsoft公司推出的一种基于服务器端的脚本编程语言。Flash与ASP的组合,使得Flash获得强大的数据库支持,有利于Flash的数据维护和更新。

3.2 基本原理

Flash不能直接查询数据库,但是将Flash和ASP连接后可以查询数据库。Flash与数据库的连接可以理解为3层结构,Flash是应用程序层,ASP是数据连接层,数据库是数据存储层,其原理如图3所示。

图3 Flash与数据库连接的基本原理

3.3 Flash连接数据库

Flash连接数据库的方法一般分为几个方面:(1)数据库的设计;(2)Flash与ASP通信脚本的编写;(3)ASP脚本的编写。

(1)本数据库以Microsoft Access为例设计,在实际应用中如果是SQL Server、Excel或者其他的数据库,虽然它们的连接方法不同,但是原理和处理方法基本是一样的,因此选择Access并不会减少该案例的参考价值。建立一个数据库,取名为AddressBook.mdb。在库中创建表Person,其结构如表1。

表1 Person表的表结构

字段名称

数据类型

字段宽度

ID 

自动编号

默认值

Name 

文本

15

Mobile 

文本

15

Address 

文本

50

Email 

文本

50

(2)Flash向ASP发送数据。Flash与ASP的通信方式很多,本文选择Flash自带的LoadVars类,因为它容易掌握,使用方便。在使用时只要记住此类的两个方法和一个事件:load、loadAndSend方法和onLoad事件。

LoadVars类的使用分四步:①创建一个LoadVars对象:var myloadToSend=new LoadVars();②给该对象添加需要传递的变量:myloadToSend.Name=_root.NameTxt.text // NameTxt是一个输入文本框的实例名;③Flash向ASP发送数据的语句是:myloadToSend.sendAndLoad("http://localhost/FlashDB/AddAddress.asp", myloadToReceive, "post")。④Flash接收ASP返回的数据后,对数据进行显示。利用onLoad事件,可以自动监听返回是否成功,如果成功,则对数据进行处理,否则,报错。例如:

myloadToReceive.onLoad = function(success) {    

    if (success) {             

        _root.NameTxt.text=this.Name;

    }else {    

        _root. NameTxt.text = "Can't connect to Server";

    }

};

(3)ASP脚本的编写,其任务主要分两部分,一是接收和传回Flash的数据,二是发送请求和接收数据库的处理结果。

ASP接收从Flash端传过来的参数的语句,例如:Name=Request.Form("Name")。在服务器端处理完请求,获取所要的数据后,由ASP向Flash传回数据,比如:Response.Write "Name="&Name。

ASP连接Acess数据库的方法:

Set newconn=Server.CreateObject("ADODB.Connection")

DBPath=Server.MapPath("AddressBook.mdb")

newconn.Open"Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath

向数据库发送查询请求并接收返回结果的方法:

Set rs=Server.CreateObject("ADODB.Recordset") '定义结果数据集

sql="select * from Person where Name="Mary"     '设置查询条件

rs.open sql,newconn '按查询条件查询数据库,并接收返回结果

 

4 Flash直接读取文本文件的方法

4.1 Flash读取文本文件

通过使用Flash中LoadVars类的LoadVariables()或Load()方法,可以直接在Flash中装载文本文件(.txt)。使用方法是:(1)新建一个LoadVars对象,比如:var container:LoadVars=new LoadVars();(2)利用Load()方法加载文本文件,比如:container.load("AddressBook.txt");(3)利用onLoad事件判断数据是否加载完毕,然后再作数据处理。判断代码如下:

container.onLoad=function(success:Boolean){

        if(success){

            _root.NameTxt.text=container.Name;

        }else{

            _root.NameTxt.text="Error! Can not load data." ;

        }

    }

4.2 文本文件的格式

当文本字符串被装在到Flash中后,Flash会自动将解析成变量名/值,进而可以使它们像变量一样被使用。如要被Flash正确解析,文本格式必须符合MIME格式。(1)变量与其值之间使用等号连接;(2)多组变量/值对之间用&分隔;(3)值不能含有任何空格,如果要在一个变量中使用空格,必须用"+"取代空格。比如:Name=Mary& Address=普陀区+光复西路1000&Email=Marygeo@163.com。

如果文本文件中包含非ASCII字符,比如上例中的Address出现中文字符,则在文本文件保存时,编码格式选择UTF-8或UTF-16,否则装载到Flash中后值会出现乱码。

 

5 Flash中多种数据读取方法的比较

表2 Flash读取数据方法比较

 

数据插入、修改和删除

适用的数据量

实现繁杂度

数据类型、结构

Flash读取XML

不支持

中等

一般

类型多样,相同结构重复

Flash连接数据库

支持

较大

较复杂

类型多样,自动以数据结构

Flash读取文本

不支持

较小

简单

类型单一,变量/值的字符串结构

(1)从数据操作的自由程度方面比较,Flash连接后台数据库的方法相对于Flash直接读取文本文件或XML文档适用范围更广。主要体现在以下几个方面:①Flash虽然能直接利用自带的类方法加载文本或XML文档,但是不能方便地插入、修改和删除其中的内容,限制了Flash程序和后台数据之间的动态更新。②数据库相对于简单的文本文件具有更强大的数据管理和维护能力且操作方便,比如SQL SERVER、ACCESS和EXCEL等。③基于ASP的Flash连接数据库方法,不仅能实现本地数据库的连接,也为远程Flash客户端访问提供可能。

(2)从方法的适用性方面比较,多个方法具有各自的适用情况。①对于少量的变量数据,只要用到Flash的Load方法就能完成读取功能。②对于数据量较多,且没有更新需求的数据,选择Flash读取XML文档的方法是较好的选择。一方面,即能满足数据量的要求,又没有数据库那么繁复;另一方面,XML所提供的统一数据标准,可以有效实现与其他程序的数据交换。其应用的例子很多,比如网上流行的XML动态相册、网络地图上的商铺信息(特指文本描述信息)等。③对于大数据量,且有数据更新需求的情况,应选择Flash与数据库连接的方法。在具体选择数据库时,本文推荐Microsoft Access。SQL SERVER相对庞大,属于服务器级别的,而非服务器级别的ACCESS安装方便(一般OFFICE中都会安装),其支持的SQL指令也非常齐全,并且完全能满足中小企业级的数据量服务。

 

6 结束语

Flash具有强大的脚本支持,使得它能方便的读取外部文本文件和XML文档。借助于ASP等中介连接数据库,进一步扩展了Flash的后台数据存储和管理能力。本文中介绍的三种Flash读取数据的方法,是比较典型的三种,其中Flash连接数据的方法可以为日后进一步研究数据符号化的实现提供参考。

 

 

参考文献

[1] 金斌英,夏安螺. Flash XML 通信方法及其实现[J]. 考试周刊. 2008, 1.

[2] 年爱华. 基于 ASP 实现 Flash 对数据库的访问[J]. 中国西部科技. 2010, 9(006): 26-28.

[3] 邢江涛. 基于 Flash ASP 技术的竞赛记分系统的设计[J]. 晋城职业技术学院学报. 2010, 3(005): 58-60.

[4] 赵航涛. Flash 中访问 XML 数据[J]. 中小学电教: 教师版. 2005(005): 59-60.

[5] Maker JobePatterson Danny. Flash 8 ActionScript标准教材[M]. 北京: 电子工业出版社, 2007.

[6] 伍守意. Flash 项目与数据库通信的研究——基于 ASP .NET 技术[J]. 电脑知识与技术. 2010, 6: 26.

 

 

相关示例文件见:http://download.csdn.net/source/3283841

转载于:https://www.cnblogs.com/chica/archive/2011/05/16/2047536.html

这篇关于基于ActionScript脚本的Flash读取外部数据的比较——香香的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/666858

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav