2016-08-18 29 views
0

我正在製作一個類似程序的控制檯,您可以在其中輸入文本,並且當您按下回車鍵後,該文本會變成變量「code」,if/elseif命令將其讀取一定的框架。 當我這樣做,雖然actionscript完全忽略了,如果只是執行內部的if。如果命令不起作用3

沒有錯誤,但有警告。這是我的全部代碼

import flash.events.KeyboardEvent; 
stop(); 
stage.focus=textbox; 
var code:String=textbox.text; 
textbox.addEventListener(KeyboardEvent.KEY_DOWN,thefunction); 
function thefunction(event:KeyboardEvent){ 
    if(event.charCode == 13){ 
    code=textbox.text; 
    trace(code); 
    page(); 
} 
} 
function page(){ 
    if(code="red"){ 
    gotoAndPlay(19) 
    } 
    else{ 
     gotoAndStop(1) 
    } 
} 

的警告是這裏=

function page(){ 
     if(code="red"){ 
     gotoAndPlay(19) 
     } 
     else{ 
      gotoAndStop(1) 
     } 
    } 

它說:警告:1100:內有條件分配。你的意思是==而不是=?

然後我試着做它說的話,當我輸入任何內容並按回車鍵(charCode 13)時什麼也沒有發生。

我已經試過用textbox.text來代替變量代碼,但仍然沒有任何反應。 (trace(code)工作正常,所以它必須與底部的東西,但我不知道)

我是新來的動作,所以我不知道如何解決這個問題(我的藉口:D)。如果有人知道如何,我很想弄清楚如何解決它。

+2

修復您的'page()'函數。它應該是'code =='red',注意'=='。 – DodgerThud

+0

我確實這樣做了,但是當我輸入紅色並按下回車鍵時,什麼也沒有發生。 –

+1

'trace(code);'說了什麼?在你的頁面函數中,如果你添加了一個'trace(「OK - 我是紅色的)」,''在使用'gotoAndPlay(19)'之前現在你會得到OK軌跡嗎? –

回答

0

首先,作爲一般規則,你不應該使用賦值運算符(單=)在if語句中,總是使用等號(=雙)

你說現在的問題是什麼「如果你賦值爲‘紅色’代碼沒有錯誤,那麼......」這當然是總是正確

然後,調試您的問題,嘗試使用trace("'" + code + "'");看到究竟你的文本字段包含的內容。如果您仍然有疑問,請使用字符代碼轉換文本並打印出來。爲什麼?如果您的文本字段中存在不可打印或不可見的字符,那麼您的語句不匹配(認爲「red」==「多行,所以你的輸入密鑰將被添加到文本並打破你的支票。將其設置爲單行以避免可能出現的問題(如果您確實需要多行輸入字段,則需要更智能的方法來比較文本,如使用正則表達式等)。

+0

LOL這是因爲它在多行 –