2015-12-15 30 views
1

我想將shower_cost的變量從第一個場景傳遞到第二個場景。該變量將以動態文本顯示。 當在第二個場景上點擊顯示按鈕時,將顯示show_cost。檢索場景之間的sharedObjects

這裏的問題似乎在檢索sharedobjects時出現錯誤,因爲它沒有顯示按鈕被擊中時的成本。

第一個場景動作

import flash.events.MouseEvent; 
import flash.net.SharedObject; 

shower_ok_btn.addEventListener(MouseEvent.CLICK, shower_multiplyClick); 
shower_back_btn.addEventListener(MouseEvent.CLICK, shower_backClick); 

var shower_multiSym:Boolean = false; 
var shower_backSym:Boolean = false; 

shower_usage.restrict="0-9"; 
shower_power.restrict="0-9"; 
shower_power.border=true; 
shower_usage.border=true; 

var shower_input1:String; 
var shower_input2:String; 
var shower_multiResult:Number; 
var shower_costResult:Number; 
var show_shower=SharedObject.getLocal("shower"); 

function shower_multiplyClick(event:MouseEvent):void{ 
    shower_multiSym=true; 
    shower_backSym=false; 


    show_shower.data.showcost =shower_cost.text; 
    show_shower.data.showpower=shower_total_power.text; 

    shower_text_total_power.text="total power(kwh):"; 
    shower_text_cost.text="Cost (rm):"; 

    shower_total_power.border=true; 
    shower_cost.border=true; 

    shower_input1=shower_usage.text; 
    shower_input2=shower_power.text; 

    if(shower_multiSym==true){ 
     shower_multiResult=parseInt(shower_input1)*parseInt(shower_input2)/1000; 
     shower_multiResult.toString(); 
     shower_total_power.text = String(shower_multiResult); 
    } 
    else{ 
     shower_total_power.text="Please Choose an option"; 
    } 

    shower_costResult=.218*(parseInt(shower_input1)* parseInt(shower_input2))/1000; 
    shower_costResult.toString(); 
    shower_cost.text=String(shower_costResult); 
    trace(shower_costResult); 

} 

function shower_backClick(event:MouseEvent):void{ 
    shower_multiSym=false; 
    shower_backSym=true; 
    gotoAndStop(1,"Scene 2"); 
} 

stop(); 

第二個場景動作:

import flash.net.SharedObject; 

show_btn.addEventListener(MouseEvent.CLICK,showReport); 

var state=0; 
function showReport(e:MouseEvent):void{ 

    var state=1; 

    if(state==1){ 

    Report_cost_shower.border=true; 
    var show_shower2=SharedObject.getLocal("shower"); 
    Report_cost_shower.text=show_shower2.data.showcost; 

} 
} 
stop(); 

回答

0

我不會推薦使用共享對象的對象之間傳遞數據,它是緩慢和不可靠的。 我一直在使用全球類這一點 - 見 https://github.com/inruntime/AS3-Global-Object

您可以使用這種方式 -

import com.inruntime.utils.*; 

    // initialize the global object 
    // you have to repeat this step in every class that will use the global 
    private var $:Global = Global.getInstance(); 

    $.show_shower = shower_cost.text;