您所在的位置:QQ首页 > 动画频道 > 其他教程> 正文

ASP + Flash 下拉列表(显示图片)
http://flash.QQ.com   2006年 08月 29日 11:27   闪吧  

下一个更精彩:FlashMediaServer-SharedObject类

在上一次我介绍了数据库与flash 连接方式.在这里,这一方面的我就不多说了....

还有ASP中的代码.我也略过不说.就只是贴出来...

[an error occurred while processing this directive]

<%

dim rsBiClass,outBigClass,outBigClassID

sql="select * from bigclass"

set rsBigClass=server.CreateObject("adodb.recordset")

rsBigClass.open sql,conn,1,1

do while not rsBigClass.eof

outBigClass=outBigClass&rsBigClass("bigClass")&"/"

outBigClassID=outBigClassID&rsBigClass("id")&"/"

rsBigClass.movenext

loop

response.write ("outBigClass="&outBigClass&"&")

response.write ("outBigClassID="&outBigClassID)

rsBigClass.close

set BigClass=nothing

conn.close

set conn=nothing

%>

保存为readBigClass.asp [an error occurred while processing this directive]

<%

dim bigid,outSmallClass

bigid=request.Form("bigid")

sql="select * from smallclass where bigid="&bigid

set rsSmallClass=server.CreateObject("adodb.recordset")

rsSmallClass.open sql,conn,3,3

do while not rsSmallClass.eof

outSmallClass=outSmallClass&rsSmallClass("smallclass")&"/"

outSmallClassPic=outSmallClassPic&rsSmallClass("pic")&"/"

rsSmallClass.movenext

loop

response.write ("outSmallClass="&outSmallClass&"&")

response.write ("outSmallClassID="&outSmallClassPic)

rsSmallClass.close

set rsSmallClass=nothing

conn.close

set conn=nothing

%>

保存为readSmallClass.asp, 相信大家都看得懂这段ASP代码.如果不懂的话.跟帧后.我再注说明了.

--------------------------------------------------------------------------------

现在就进入到flash里面去编程了.

从组件中找现个下拉列表,拉入两个到场景中.将其分别命名为myBigCmb,mySmaCmb

在第一帧中写上:

System.useCodepage = true;

var readBigL = new LoadVars();//定义一个LoaVars类对像.

readBigL.load("readBigClass.asp");//加载readBigClass.asp页面.

readBigL.onLoad = function(su) {

if (su) {

//加载readBigClass.asp成功

_root.gotoAndPlay(2);

}

};

stop();//这第二帧的大部分内容在上个帧子中都用到过.无非就是从数据库取出数据,把数据分别放进定义好的数组里面去.

第二帧:

var bigClassA = new Array();

var bigClassIDA = new Array();

for (i=0; i

bigClassA = readBigL.outBigClass.split("/", i);

bigClassIDA = readBigL.outBigClassID.split("/", i);

}

for (j=0; j

myBigCmb.addItem({label:bigClassA[j], data:bigClassIDA[j]});//这句是为下拉列表添加数据,如果不是很清楚就找一下组件教程来学一下:)

}

intiItem = myBigCmb.selectedItem.data;//这是获得第一个下拉列表的最初显示的那个值,如果不加这个.那么.一运行那个flash,第二个下拉列表会没有值.

getSmallClass(intiItem);

//这个getSmallClass()是一个自定义函数.后面再介绍.它的功能就是从数据库中取得被选中的大类相对应的小类的值.把值取出来后再把其值赋到第二个下拉列表.

//--------大类的change----------------------------------------

my = {};

my.change = function(cmb) {//这是大类也就是第一个下拉列表的change事件.

bigidf = cmb.target.selectedItem.data;//获得第一个下拉列表中被选中的选项的data值.

getSmallClass(bigidf);

//这里再调用自定义函数.这里就是当大类一变,就从数据库中取出相对应的小类的值,同时把值取出来后再把其值赋到第二个下拉列表.

};

//--------从数据库里取得小类的值-----------------

function getSmallClass(bigidf) var smallClassSV = new LoadVars();

var smallClassLV = new LoadVars();

smallClassSV.bigid = bigidf;

//注意这里的写变量的方式用了smallClassSV.bigid,如果不加前面的smallClassSV,那么bigid的值就不会传到被加载的ASP文件里

smallClassSV.sendAndLoad("readSmallClass.asp", smallClassLV, "POST");

//这里用到了这个sendAndLoad方法来加载页页.同时把结果返回到smallClassLV类里面来.

smallClassLV.onLoad = function(su) {

//注意这里的onLoad 事件是smallClassLV的,而不是smallClassSV的(刚开始用这个方法时,就是这里卡了我很^_^久)

if (su) {

_global.smallClass = smallClassLV.outSmallClass;

_global.smallClassID = smallClassLV.outSmallClassID;

setSmallClass();

//这里调用了另一个自定义函数,这个函数的作用是为第二个下拉列表赋值,将smallClassLV接收来的数据放到第二个下拉列表中.

} else {

aa.text = "数据连接不成功";

}

};

}

//----把小类的值放到下拉列表中----------------------------------------

function setSmallClass() {{//这个就是自定义函数.其作用就是为小类(第二个下拉列表)赋值

//如果大家看得懂上面的,那么下面的想必是不用再作说明了吧...呵呵....

var smallClass = _global.smallClass;

var smallClassID = _global.smallClassID;

var smallClassA = new Array();

var smallClassIDA = new Array();

for (i=0; i

smallClassA = smallClass.split("/", i);

smallClassIDA = smallClassID.split("/", i);

}

mySmaCmb.removeAll();

//清除在这个下拉列表中的原来的值.

for (j=0; j

mySmaCmb.addItem({label:smallClassA[j], data:smallClassIDA[j]});

}

picname = mySmaCmb.selectedItem.data;//这个是取得第二个下拉列表的最始值.

loadpic(picname);//调用加载图片的函数.

}

//---------小类的change-------------------------------

mys = {};

mys.change = function(cmb) {

//这是小类的change事件

sid = cmb.target.selectedItem.data;//当小类的选中值(也就是selectedItem)发生改变时,取得小类的选中的data值.

loadpic(sid);//调用加载图片的值,小类一发生变化,那么相对应的显示的图片也是要变化的.

};

//-------------加载外部图片------------------------------

function loadpic(picname) {//这个就是加载图片的函数了.

_root.createEmptyMovieClip("picmc", 0);//创建一个空白影片剪辑.

_root.picmc._x = 200;

_root.picmc._y = 100;//设置空白影片的位置.

_root.picmc.loadMovie(picname);//加载图片,注意里面的picname是当调用这个函数时,所传进入进来的(其实就是图片名字)

}

myBigCmb.addEventListener("change", my);//添加下拉列表的change事件.

mySmaCmb.addEventListener("change", mys);

stop();

//OK,have a try!

免费订阅】【发表评论】【动画论坛】【  】【关闭
发表评论
 QQ号码:
 QQ密码:
 验证码: 匿名发表
* 请各位网友遵纪守法并注意语言文明。
*《互联网电子公告服务管理规定》
*《全国人大常委会关于维护互联网安全的规定》




关于腾讯 | About Tencent | 服务条款 | 广告服务 | 腾讯招聘 | 腾讯公益 | 客服中心 | 网站导航
Copyright © 1998 - 2008 Tencent Inc. All Rights Reserved
腾讯公司 版权所有