基于FLASH和WEB3D后台数据库电子商务系统设计 第10页
图5-6商品列表动态数据菜单原理图
PHP端主要功能函数代码如下:
/* 从数据库中取出商品的信息 */
function get_products($category_id=0) {
$qid = db_query("
SELECT
p.id
,p.name
,p.description
,p.price
,p.on_special
,p.ProductsImage
,p.Products3Dmodel
,pc.category_id
FROM
products p
,products_categories pc
WHERE p.id = pc.product_id
AND pc.category_id = $category_id
");
return $qid;
}
/*向Flash传送商品数据*/
$count=0;
while ($prod = db_fetch_object($qid_p)) {
print "&prod".$count."id=".$prod->id;
print "&prod".$count."name=".urlencode($prod->name);
print "&prod".$count."description=".$prod->description;
print "&prod".$count."price=".$prod->price;
print "&prod".$count."ProductsImage=".$prod->ProductsImage;
print "&prod".$count."Products3Dmodel=".$prod->Products3Dmodel;
$count++;
}
$count++;
print "&num=".$count;
/*向Flash传送商品的数目*/
print "&result=Okay";
/*告诉Flash数据已传送完毕*/
Flash端ActionScript主要功能函数代码如下:
// AddItem()函数使用duplicateMovieClip语名在组合框内生成一个新的选项。
function AddItem (NewCapt) {
var NewName = "LBItem_"+ItemsCount;
duplicateMovieClip ("ItemOrigin", NewName, ++DupLevel);
set (NewName+".Caption", NewCapt);
set (NewName+".Index", ItemsCount);
setProperty (NewName, _x, LeftOffset);
var CurrY = TopOffset+(ItemsCount++)*HeightStep;
setProperty (NewName, _y, CurrY);
setProperty (NewName, _visible, !(CurrY>MaxItemY));
call (NewName+".Init");
ScrollBar.SetScrollStep();}
//根据PHP传送的商品数num,动态生成组合框的项目
for (var i = 0; i<num; i++) {
name=this["prod"+i+"name"]
Items.AddItem(name);}
Items.SelectItem(0);
5.2.2 Flash动态加载外部商品图像功能模块
在Flash5中是不能直接加载外部的静态图像的,所以在Flash中要实现点击某种商品名称而动态出现商品的图片是比较困难的。但在Flash中可以动态地加载外部的SWF格式动画文件到主场景中,这样我们就可以先把外部商品图片转换成Flash的SWF格式文件,在Flash主场景中建立一个空的MC(Movie Clip),然后再用Flash中的LoadMovies语句把外部的商品图片的SWF格式文件加载到动画的主场景中,替换预先建立的空MC,并且加载商品图片SWF格式文件的所在路径由PHP从MySQL数据库读出,从而实现Flash动态读取外部图像。
Flash ActionScript主要功能函数代码如下:
// HandleChangeItem ()函数在客户选择组合框的选项时执行,功能是根据客户选择的商品名称,更新商品的具体信息。
function HandleChangeItem () {
count=eval(CurrentItem+".Index");
../:description =_parent["prod"+count+"description"] ;
../:price =_parent["prod"+count+"price"];
../:Products3Dmodel =_parent["prod"+count+"Products3Dmodel"];
//把商品Cult3D模型文件所在路径赋值给变量Products3Dmodel
../:id =_parent["prod"+count+"id"];
loadMovie(_parent["prod"+count+"ProductsImage"],_parent.prodimage);
//根据_parent.prodimage变量加载外部商品图片SWF文件 }
5.2.3 Flash与Cult3D文件的联接功能模块
由于Flash和Cult3D文件的都要在浏览器中安装相应的ActiveX控件后才能播放,而在Flash中是不能直接播放Cult3D动画。所以Flash与Cult3D文件的联接问题就成了Flash和Cult3D两种技术能否整合使用的关键。我通过仔细分析发现它们两者都是把HTML页面作为依托进行播放的,那么我们也就可以通过HTML页面和JavaScript语句把它们联系起来。具体的解决方法为:在Flash中通过当客户点击Flash的Button对象时执行GetURL语句,新开一个浏览器窗口并加载已插入Cult3D文件的HTML页面到该窗口中,加载HTML页面文件的路径由PHP从MySQL数据库读出,从而实现Flash与Cult3D文件的动态联接。
Flash的Button对象中ActionScript代码如下:
on (release) {
if (Products3Dmodel != "") {
Url = "javascript:openIT4FLASH('"+Products3Dmodel
+"',525,465,null,null,'mywin001');";
getURL (Url);
}
}
5.3 购物车模块
在PHP4尚未出来之前,PHP自身不支持session,这使得开发购物车之类的程序成了一件麻烦的事情。通常使用的办法有两种:一是使用专门的临时数据库来记录用户的购物信息,直到用户结算时才将其放到一个较大的专用数据库中,这种方法实现起来比较麻烦,而且涉及到大量的数据库操作,效率较低。另一种是使用PHPLIB,它是一种专门的PHP扩展库,可以使用session。现在PHP4内置了session功能,Flash购物车就是使用PHP这项新功能实现的。购物车模块共包括四个功能模块:
1.添加商品到购物车功能模块
2.查看购物车功能模块
3.购物车更新功能模块
4.购物车清空功能模块
5.1.1购物车类的定义
PHP4支持面向对象的编程,这使得开发大型的程序更加容易。在这里定义了一个购物车类,以后使用时调用其相关函数即可。
/*构造一个购物车对象*/
class Cart {
var $items;
var $total;
function Cart() {
/* 对象构造函数 */
$this->init(); }
function init() {
/* 初始化和重置购物车 */
$this->items = array();
/*此变量用来存放商品数据,实质是二维数组*/
$this->total = 0;
/*设置商品总价为0*/}
function add(&$productid, $qty) {
/* 加一个商品项入购物车并且更新总价*/
if (isset($productid)) {
setdefault($this->items[$productid], 0);
$this->items[$productid] += $qty;
function set(&$productid, $qty) {
/* 设置购物的商品数量*/
if (isset($productid)) {
$this->items[$productid] = (int) $qty;
function cleanup() {
/* 清空购物车,删除无效商品ID并清除商品数量少于1的购物项*/
foreach ($this->items as $productid => $qty) {
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>