나는 당신의 문제를 더 자세히 조사 할 시간을 가졌다. 질문, 사용자 & Answer 및 AnswerEvent 클래스의 모델로 세 클래스를 만들었습니다.
주 클래스는 데이터를 조작하기위한 중심점 역할을합니다. 사용자가 질문에 대답하면 사용자의 대답 (Answer 클래스)이 주 클래스에 알리기 위해 이벤트를 전달합니다. 대답에는 사용자 속성, 질문 속성 및 isCorrect 속성이 있으며 AnswerEvent에는 주 클래스에 저장할 수있는 Answer 개체가 포함되어 있습니다.
이벤트가 전달 된 후 응답은 응답 배열에 저장됩니다. 각 대답에는 사용자 데이터뿐만 아니라 대답 된 질문 &이 포함되어 있으므로이 배열을 사용하여 a, b & c 개의 질문에 대답 할 수 있습니다.
수업에 관해서, 나는 첫 번째 대답에 노출 된 것과 비슷한 원리를 따랐다. 방금 일부 발췌 록을 게시 했으므로 여기에 모든 코드를 게시 할 수있는 충분한 공간이 없다고 생각합니다.
//Inside the main class
private var answers:Array = [];
private function init():void
{
this.addEventListener(AnswerEvent.ANSWER , answerEventListener);
var q1:Question = new Question(0 , ["Sweden" , "Denmark"] , 0);
var q2:Question = new Question(1 , ["Norway" , "Finland"] , 1);
var q3:Question = new Question(2 , ["Iceland" , "Ireland"] , 0);
var user1:User = new User(5 , 25 , 0 , "Lorem" );
var user2:User = new User(6 , 45 , 1 , "Ipsum" );
var user3:User = new User(7 , 32 , 1 , "Dolor" );
//if the answer is correct , the totalCorrect property is incremented
// in the User class, check the Answer class below for an explanation of the
//parameters
user1.answer(new Answer(this , user1 , q1 , 1));
}
private function answerEventListener(event:AnswerEvent):void
{
answers.push(event.answer);
trace(this , event.answer.isCorrect);
trace(this , event.answer.user.age);
}
다음은 Answer 클래스의 모델입니다. 공간 부족으로 getter를 추가하지 않았습니다. AnswerEvent은 Event 클래스를 확장하고 Answer 유형의 대답 속성을 추가합니다.
public class Answer
{
private var _question:Question;
private var _answer:int;
private var _user:User;
private var _isCorrect:Boolean;
public function Answer(dispatcher:EventDispatcher , user:User , question:Question , answer:int)
{
this._user = user;
this._question = question;
this._answer = answer;
// not essential but will help iterate thru correct answers
// the _answer property should be _answerIndex really, in order not to be confused
// with an Answer object (quick job !)
if(question.correctAnswer == answer)
_isCorrect = true;
// the this keyword corresponds to this answer
dispatcher.dispatchEvent(new AnswerEvent(AnswerEvent.ANSWER , this));
}
}
이것은 html + swf 응용 프로그램입니까, 아니면 AIR 응용 프로그램입니까? 왜 로컬 데이터베이스를 사용하지 않습니까? – dirkgently
온라인 또는 오프라인 용으로 만든 단순한 swf입니다. 본질적인 AS3 데이터 구조를 사용하여 이러한 테이블과 관계를 복제 할 수있을 것이라고 생각했지만 분명히 잘못되었습니다. – dani