사용자 정의 클래스 인스턴스를 타임 라인에 정의 된 변수에 액세스하는 방법을 이해하도록 도와주십시오.AS3 타임 라인에서 변수에 액세스하도록 맞춤 클래스 인스턴스를 가져 오는 방법은 무엇입니까?
이 프로그램은 여러 단계의 메모리 실험이 될 것이므로 타임 라인을 사용하는 것이 가장 적합합니다. (FWIW, 나는 XML을 사용하지 않고 가능한 한 간단하게 유지하려고 노력하고 있습니다.) 지금은 방금 한 프레임짜리 FLA를 만들어 어휘 테스트를하려고합니다. VocabQ라는 사용자 정의 클래스를 작성했습니다.이 클래스에는 VocabButton이라는 사용자 정의 클래스의 인스턴스가 4 개 포함되어 있습니다. 바로 지금 버튼 중 하나를 클릭하면 버튼 레이블이 추적됩니다. 그러나 타임 라인에 선언 된 String 변수 CurrentResponse의 값도 업데이트하려고합니다. VocabButton 클래스에서 CurrentResponse를 참조하려고하면 "1120 : 정의되지 않은 속성에 액세스 ..."오류가 발생합니다.
나는 인터넷을 통해 발견 한 토론을 바탕으로 다양한 접근법을 시도했지만 아직 성공하지 못했고 혼란스러워지고 있습니다. 도와주세요! (간단한 솔루션은 존재한다면 크게 감사 할 것입니다!) 아래 코드를보십시오. 는
코드를 타임 라인에 ~, 제이슨 감사합니다 :
이import VocabQ;
import flash.display.*;
stop();
var CurrentResponse:String="NA";
var VocabQuestion = new VocabQ("VocabWord",["answerA","answerB","answerC","answerD"]);
addChild(VocabQuestion);
이
VocabQ.as 코드 :
는package
{
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.text.*;
import VocabButton;
public class VocabQ extends MovieClip{
private var _VocabWordText:String;
private var _VocabWord:TextField;
private var _ResponseOptions:Array;
public function VocabQ(VocabWordText:String,ResponseOptions:Array){
_VocabWordText=VocabWordText;
_ResponseOptions=ResponseOptions;
build();
}
private function build():void{
_VocabWord = new TextField();
_VocabWord.text=_VocabWordText;
_VocabWord.x=25;
_VocabWord.y=25;
_VocabWord.textColor = 0x000000;
addChild(_VocabWord);
for (var i:int; i < _ResponseOptions.length; i++){
var _VocabButton:VocabButton = new VocabButton(_ResponseOptions[i]);
_VocabButton.x = 25 + (_VocabWord.width) + 10 + ((_VocabButton.width + 2) * i);
_VocabButton.y = 25;
addChild(_VocabButton);
}
}
}
}
이
VocabButton.as 코드 :
package
{
import flash.display.*;
import flash.text.*;
import flash.events.*;
public class VocabButton extends MovieClip{
private var _btnLabel:TextField;
public function VocabButton(labl:String){
_btnLabel = new TextField();
_btnLabel.textColor = 0x000000;
_btnLabel.text = labl;
_btnLabel.border=true;
_btnLabel.borderColor=0x000000;
_btnLabel.background=true;
_btnLabel.backgroundColor= 0xDAF4F0;
_btnLabel.mouseEnabled = false;
_btnLabel.selectable=false;
_btnLabel.width=100;
_btnLabel.height=18;
buttonMode=true;
useHandCursor=true;
addEventListener(MouseEvent.CLICK,onClick,false,0,true);
addChild(_btnLabel);
}
private function onClick(evt:MouseEvent):void{
trace(_btnLabel.text);
//CurrentResponse=_btnLabel.text; //causes error 1120: Access of undefined property...
}
}
}
SO, Jason에 오신 것을 환영합니다. 초보자에게 좋은 질문입니다. 지금 http://stackoverflow.com/faq를 보시길 바랍니다. – JcFx