热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

aspphpflashjava,Linux_Flash和ASP/PHP以及javascript的交互, 唉,第一次写文章,真是phpStudy...

Flash和ASPPHP以及javascript的交互唉,第一次写文章,真是很紧张,这是前几天在网上查资料和自己研究的结果,

Flash 和 ASP / PHP 以及 Javascript 的交互

唉,第一次写文章,真是很紧张,这是前几天在网上查资料和自己研究的结果,希望能对一些朋友有用。水平所限,肯定有错漏之处,烦劳高手指正,不胜感激!

下面就书归正传:

Flash 以Javascript 为中介和 ASP/PHP 交互

我们班有同学录,人气比较旺。前一段时间管理员托我写一个基于 HTML 的播放器放在班级留言上面,要求很简单,就是实现循环播放。于是就写了一个,比较容易,无非就是 Javascript 的操作和 ActiveX 控件的交互,查了查 MSDN 决定用 WMP 的 ActiveX 插件。写完后,播放效果总是不尽如人意,不知是我写的 Javascript 有问题还是 WMP 的 Javascript 接口有问题,在播放的时候有时不能循环。后来突然想到了 Flash 7.0 也是可以播放 mp3 的,于是开始了设计(没学过系统工程所以不标准,但愿不会贻笑大方):

目标:

1. 播放mp3,基本播放控制功能(暂停,继续,索引,音量控制等);

2. 当前曲目循环、列表曲目循环

实现:

1. 音乐列表从数据库中动态检索

2. 提供添加音乐 URL 的界面

这里,我的思路是:用户访问 ASP(PHP) 页面 => ASP(PHP) 请求数据库 => 返回数据集 => ASP(PHP) 将数据集写为 Javascript 变量 => Javascritp 通过 Flash 的接口函数写到 Flash 中的 DynamicText 变量中 => Flash 将列表显示

这样就出现了一个问题,文件列表的数量是不定的,怎么在 Flash 中处理,设置几个变量呢?我的解决办法是(也许不是很好的办法,但是却很简单,如果高手有更好的方法,请不吝赐教,谢谢了):在 Flash 中设置两个变量,一个是保存文件名 varSongname 另一个是保存 URL varUrl。在 Server 端就生成形如(本文中的英文引号被自动替换成了中文引号,请注意):

var strSongname = “Songname1,Songname2,Songname3“;

的客户端 Javascript 的变量定义/赋值语句,然后再使用 SetVariable() 语句将此变量传入 Flash 中,Flash 就将字符串 split() 成数组,然后,不用我教了吧?各就各位的显示出来吧

在这样的思路指导下,诞生了3个文件(sFMP的意思是simple Flash MP3 Player) 1 ) sFMP.swf - Flash 文件作为用户界面;2 ) sFMP.ASP (.PHP) - 请求数据库将文件列表作为 Javascript 的变量写入返回的 HTML 文件;3 ) add.ASP (.PHP) 添加 URL 的页面。下面就具体讲解每个文件的程序逻辑,和工作步骤:

sFMP.swf 的制作

由于用的是 Flash MX 2004 Professional 所以直接就借用了里面许多组件。(不过要慎重,因为一旦加入 ActionScript 2.0 和组件的支持,文件就会增肥,一般会变大60多KB,视使用组件多少而定。具体原因可能是要包含许多组建库的缘故吧?)下面是里面使用到的组件:

MediaPlayback 组件:

可以直接播放 MP3 很方便。其包括很多属性和方法、事件。Macromedia 里面有比较详细的说明。

InstanceName: _player

Action:

on (load) { // 可以插入一些播放器初始化代码

}

on (complete) { // 这个事件当一首音乐播放完毕时产生

// switching process

if (_root._cbLoopCur.selected == true) {

// 当选择了循环播放当前曲目

_root._player.play();

} else {

if (_root._cbLoopAll.selected == true) {

// 选择了循环播放全部列表曲目

var iIndexRead:Number = _root.SongsList.selectedIndex;

// 将列表中的选择高亮条下移一个

// 如果已经到末尾则重置

iIndexRead++;

if (iIndexRead > _root.SongsList.length - 1) {

// set current song index = 0

iIndexRead = 0;

}

// 更新 List 显示

_root.SongsList.selectedIndex = iIndexRead;

// 这里调用一个函数用来取得播放列表当前选择的 URL

// 并用setMedia()和play()方法使播放器播放曲目

// 由于比较简单所以略掉了

}

}

}

on (change) { // 正在播放音乐时候

}

on (progress) { // 正在下载音乐文件的时候

}

List 组件:

用来显示从数据库中检索的文件列表。

InstanceName: SongsList

Action:

on (change) {

// player control

// get list item data

var str:String = this.getItemAt(this.selectedIndex).data;

if (str.length>0 && str != undefined) {

// open the URL

_root._player.setMedia(str, "MP3");

if (_root._player.contentPath.length>0) {

_root._player.play();

}

}

}

/*

从列表中读出当前选择的文件,取得其的 data (假设已经从数据库中读出所需资料,label 显示文件名

data 则储存的是文件的 URL)

由于将 MediaPlayback 组件设为 Autostart = false 所以需要运行 play() 方法使其开始播放

如果 Autostart = true 则一旦设置了 contentPath 属性,就立即载入并播放

*/

Checkbox 组件:

有两个,分别用来选择是单曲循环还是列表循环。

InstanceName: _cbLoopCur 、_cbLoopAll

Action:

两者是互斥关系,选择一个就取消另一个,两个都不选就是播放选择曲目一遍,代码简单,略。

Dynamic Text 框:

有两个,虽然不是组件,但却是和 Javascript 等实现交互的关键。

Variable: varSongname 、varUrl

两个变量分别是保存外界传入的文件名和 URL 。

Tips:

在 Javascript 中,Flash 专门提供了很多接口函数,这里用到的就是设置 Flash 中变量的 SetVariable(variable_name,value) 函数;Flash 中,也提供了一个和 Javascript 交互的 ActionScript 函数 fscommand() 。

sFMP.ASP(PHP) 文件程序逻辑:

这个的程序很简单,我就不废话,直接贴代码了,如果有不懂的,可以问我,电子邮件联络。

' 这是 sFMP.ASP 的部分源代码,经过了一些修改,可能会包含一些错误,因为没有经过测试

' 有一些环境可能和你机器上面不同,请相应修改。

' 修改前的完整源代码是经过 Windows98 + PWS + Access 环境的测试的

' 所以使用之前请仔细检查有无拼写或其他明显错误,谢谢!

Option Explicit

Dim rsFiles, cnn, strSql, strCnn

' 使用 ADO 链接数据库,取得数据集,常规做法没什么好讲的

strCnn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("songs.mdb")

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

cnn.Open strCnn

strSql="SELECT * FROM songsInfo WHERE type='mp3' ORDER BY id DESC"

Set rsFiles=Server.CreateObject("ADODB.RecordSet")

rsFiles.CursorLocation=3

rsFiles.Open strSql,cnn,2,3

' 如果取得数据集失败则停止执行,输出错误

If TypeName(rsFiles)="Nothing" Then

Response.Write("open RecordSet error
")

Response.End()

End If

%>

Dim strName, strUrl

' 遍历数据集,准备输出字符串

If rsFiles.RecordCount > 0 Then

' 要将字符串准备成 var url = "url1,url2,url3"; 这样的形式

strName = rsFiles.Fields("name") ' 这是取得文件名

strUrl = rsFiles.Fields("url") ' 这是取得其URL

本文作者:相关阅读:

window.name代替COOKIE的实现代码

PHP SQLite类

MySQL数据源表结构图示

Server 2008升级安装和完全安装全攻略

再说AutoComplete自动补全之实现原理

Javascript 折半查找字符在数组中的位置(有序列表)

js 匿名调用实现代码

CSS教程:网页颜色的几种表示

Jquery 基础学习笔记

Javascript 放大镜 移动镜片效果代码

如何把一篇文章按要求分段

Linux操作系统SSH远程登录慢的解决方法

深入理解Javascript系列(2) 揭秘命名函数表达式

通俗易懂的php防注入代码



推荐阅读
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 导读:很多朋友问到关于php前端脚本语言有哪些的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Flash CS4/5与Flex/Flash Builder的配合编码
    FlashCS45与FlexFlashBuilder的配合编码注:为方便起见文中把FlashCS45简称为Flash,把FlexFlashBuilder ... [详细]
author-avatar
GYuan83_844
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有