使用 ActionScript 2.0 组件 |
|
|
|
| 使用组件创建应用程序 > 创建结帐屏幕 > 为 Checkout 屏幕添加代码 | |||
现在您已准备就绪,可以向应用程序的 Checkout 屏幕(主时间轴上的第 10 帧)添加代码了。此代码处理用户在 Billing Information、Shipping Information 和 Credit Card Information 窗格(先前使用 Accordion 组件和其它组件创建)中输入的数据。
stop(); import mx.containers.*; // 定义舞台上的 Accordion 组件。 var checkout_acc:Accordion;
// 定义 Accordion 组件的子项。
var child1 = checkout_acc.createChild("checkout1_mc", "child1_mc", {label:"1. Billing Information"});
var thisChild1 = child1.checkout1_sp.spContentHolder;
第一行调用 Accordion 组件的 createChild() 方法,并创建 checkout1_mc 影片剪辑元件(先前已创建)的一个实例,其实例名称为 child1_mc,标签为"1。Billing Information"。第二行代码创建指向嵌入的 ScrollPane 组件实例的快捷方式。
/* 将第二个子项添加到 Accordion。
为 sameAsBilling_ch CheckBox 添加一个事件侦听器。
此操作将第一个子项的表单值复制到第二个子项。 */
var child2 = checkout_acc.createChild("checkout2_mc", "child2_mc", {label:"2. Shipping Information"});
var thisChild2 = child2.checkout2_sp.spContentHolder;
var checkboxListener:Object = new Object();
checkboxListener.click = function(evt:Object) {
if (evt.target.selected) {
thisChild2.shippingFirstName_ti.text = thisChild1.billingFirstName_ti.text;
thisChild2.shippingLastName_ti.text = thisChild1.billingLastName_ti.text;
thisChild2.shippingCountry_ti.text = thisChild1.billingCountry_ti.text;
thisChild2.shippingProvince_ti.text = thisChild1.billingProvince_ti.text;
thisChild2.shippingCity_ti.text = thisChild1.billingCity_ti.text;
thisChild2.shippingPostal_ti.text = thisChild1.billingPostal_ti.text;
}
};
thisChild2.sameAsBilling_ch.addEventListener("click", checkboxListener);
前两行代码与创建 Billing Information 子项的代码类似:创建 checkout2_mc 影片剪辑元件的一个实例,该实例的名称为 child2_mc,标签为"2.Shipping Information"。第二行代码创建指向嵌入的 ScrollPane 组件实例的快捷方式。
从第三行代码开始,向 CheckBox 实例添加一个事件侦听器。如果用户单击该复选框,发运信息则使用用户在 Billing Information 窗格中输入的数据。
// 定义第三个 Accordion 子项。
var child3 = checkout_acc.createChild("checkout3_mc", "child3_mc", {label:"3. Credit Card Information"});
var thisChild3 = child3.checkout3_sp.spContentHolder;
/* 设置舞台上三个 ComboBox 实例的值: ccMonth_cb, ccYear_cb and ccType_cb */ thisChild3.ccMonth_cb.labels = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]; thisChild3.ccYear_cb.labels = [2004, 2005, 2006, 2007, 2008, 2009, 2010]; thisChild3.ccType_cb.labels = ["VISA", "MasterCard", "American Express", "Diners Club"];
/* 为 checkout_button Button 实例创建一个侦听器。
用户单击 Checkout 按钮时,此侦听器将所有表单变量发送到服务器。 */
var checkoutListener:Object = new Object();
checkoutListener.click = function(evt:Object){
evt.target.enabled = false;
/* 创建两个 LoadVars 对象实例,它们将变量发送到远程服务器,
并接收来自远程服务器的结果。 */
var response_lv:LoadVars = new LoadVars();
var checkout_lv:LoadVars = new LoadVars();
checkout_lv.billingFirstName = thisChild1.billingFirstName_ti.text;
checkout_lv.billingLastName = thisChild1.billingLastName_ti.text;
checkout_lv.billingCountry = thisChild1.billingCountry_ti.text;
checkout_lv.billingProvince = thisChild1.billingProvince_ti.text;
checkout_lv.billingCity = thisChild1.billingCity_ti.text;
checkout_lv.billingPostal = thisChild1.billingPostal_ti.text;
checkout_lv.shippingFirstName = thisChild2.shippingFirstName_ti.text;
checkout_lv.shippingLastName = thisChild2.shippingLastName_ti.text;
checkout_lv.shippingCountry = thisChild2.shippingCountry_ti.text;
checkout_lv.shippingProvince = thisChild2.shippingProvince_ti.text;
checkout_lv.shippingCity = thisChild2.shippingCity_ti.text;
checkout_lv.shippingPostal = thisChild2.shippingPostal_ti.text;
checkout_lv.ccName = thisChild3.ccName_ti.text;
checkout_lv.ccType = thisChild3.ccType_cb.selectedItem;
checkout_lv.ccNumber = thisChild3.ccNumber_ti.text;
checkout_lv.ccMonth = thisChild3.ccMonth_cb.selectedItem;
checkout_lv.ccYear = thisChild3.ccYear_cb.selectedItem;
/* 将变量从 checkout_lv LoadVars 发送到服务器上的远程脚本。
保存 response_lv 实例中的结果。 */
checkout_lv.sendAndLoad("http://www.flash-mx.com/mm/firstapp/cart.cfm", response_lv, "POST");
response_lv.onLoad = function(success:Boolean) {
evt.target.enabled = true;
};
};
thisChild3.checkout_button.addEventListener("click", checkoutListener);
cart_mc._visible = false;
var backListener:Object = new Object();
backListener.click = function(evt:Object) {
evt.target._parent.gotoAndStop("home");
}
back_button.addEventListener("click", backListener);
|
|
|
|