>From your loop, you're accessing an array element that doesn't exist. I
would actually advise a different approach to the problem.

Don't use pure arrays within pure arrays (called multidimensional
arrays).  I find it very hard to understand and maintain that code. It
can get confusing easily and doesn't easily allow for scalability.  I
would have an array store class instances which are just classes with
public properties only (called value objects or VOs). One or more of
those properties of the VO instance can be an array, so you can have
nested logic and data, but you are effectively using an "object > array
> object > array" structure, where the objects are defined by you, the
class-writer, instead of an "array > array > array" structure where you
have to do crazy ways to access the data. By using value object
instances, you are describing the data and structure.  By using only
arrays within arrays, and no objects, you have neither structure
definition or data definition.

When you loop through an array, instead of this approach:

>       var tamanho = p1.length - 1 // o indice comeca com zero entao
tem 1
> elemento a menos.
>
>       for (var r = 0; r <= tamanho; r++ ) {
>       data = p1[r];

Assuming you create an array of class instances, I would recommend this
instead for simplicity's sake because I think the problem is the way you
are looping through the array:

var questionVO1:QuestionVO = new QuestionVO();
questionVO.question = "Which fruit is yellow?";
questionVO.answer = "Banana";

var questionVO2:QuestionVO = new QuestionVO();
questionVO2.question = "What color is the sky?";
questionVO2.answer = "Blue";

var myQuestions:Array = [questionVO1, questionVO2];

//So alternatively (not knowing exactly what you wrote your loop for),
as an example, you can 
//loop through myQuestions and set all the VO's score property to 0,
like this:

for each (var questionVO:QuestionVO in myQuestions)
{
        //set any property of each questionVO here
        questionVO.score = 0;
}

//etc.  I'd actually store the question information in XML and loop
through that to create these VO instances, but you get the point.
//So to check to see if the answer is right:

if(userResponseTextField1.text == questionVO1.answer)
{
        questionVO.score++;
}

I'd actually take a more elegant approach than that for a quiz, but this
just shows you the basic form of how to check for the user's right
response.


Jason Merrill 

Instructional Technology Architect
Bank of America   Global Learning 

Join the Bank of America Flash Platform Community  and visit our
Instructional Technology Design Blog
(Note: these resources are only available for Bank of America
associates)






-----Original Message-----
From: flashcoders-boun...@chattyfig.figleaf.com
[mailto:flashcoders-boun...@chattyfig.figleaf.com] On Behalf Of Rodrigo
Augusto Guerra
Sent: Thursday, July 01, 2010 10:28 AM
To: 'Flash Coders List'
Subject: Re: [Flashcoders] passing an array as a method = TypeError:
Error#1009: Cannot access a property or method of a null object
reference.

thanks for your reply cor,  you are correct, p1 is a parameter for the
constructor (as string) and for the method (as array).

Still, if i change the datatype of data to string the error persists

  public function setGabarito(p1:Array) {

   var tamanho = p1.length - 1 // o indice comeca com zero entao tem 1
elemento a menos.
   var data:String;

   //copia os membros do array
   for (var r = 0; r <= tamanho; r++ ) {

        data = p1[r];
        //data = "hello";

        aRespGabarito[r] = data;  <-any of the declarations above for
data results in an error.

    }

  }


----- Original Message -----
From: "Cor" <c...@chello.nl>
To: "'Rodrigo Augusto Guerra'" <rodr...@alumni.org.br>; "'Flash Coders
List'" <flashcoders@chattyfig.figleaf.com>
Sent: Thursday, July 01, 2010 10:42 AM
Subject: RE: [Flashcoders] passing an array as a method = TypeError:
Error
#1009: Cannot access a property or method of a null object reference.


> Data is an Array and p is a String
>
> -----Original Message-----
> From: flashcoders-boun...@chattyfig.figleaf.com
> [mailto:flashcoders-boun...@chattyfig.figleaf.com] On Behalf Of 
> Rodrigo Augusto Guerra
> Sent: donderdag 1 juli 2010 15:36
> To: Flash Coders List
> Subject: [Flashcoders] passing an array as a method = TypeError: Error
> #1009: Cannot access a property or method of a null object reference.
>
> Hi all,
>
> I'm creating a simple class that has an method that will receive an 
> array as a parameter and store it inside the class in a property. This

> gives me the error below and I'm stuck. Also I would like to know why 
> if I change the code inside the method setGabarito to just ( 
> aRespGabarito = p1 )  it works...
>
>
> TypeError: Error #1009: Cannot access a property or method of a null 
> object reference.
> at trueFalse/setGabarito()
> at tf_teste_fla::MainTimeline/frame1()
>
>
> this is the class:
>
> package {
>
> import flash.display.Sprite;
>
> public class trueFalse extends Sprite{
>
>  //propriedades
>  var nome:String;
>  var aRespGabarito:Array; //tera o gabarito do exercicio
>
>  //construtor
>  public function trueFalse(p1:String) {
>   nome = p1;
>  }
>
>
>  public function setGabarito(p1:Array) {
>
>       var tamanho = p1.length - 1 // o indice comeca com zero entao
tem 1
> elemento a menos.
>
>       for (var r = 0; r <= tamanho; r++ ) {
>            var data:Array = p1[r];
>            aRespGabarito[0] = data;   <<-- ERROR HERE
>            trace(aRespGabarito[0]);
>       }
>
>  }
>
> }
>
> }
>
>
>
> and this is the code inside the test movie:
>
> var usuario:trueFalse = new trueFalse("aa");
> var arrQuestao:Array = new Array();
>
> arrQuestao[0] = ["btV1","btX1","btV1",0];
> arrQuestao[1] = ["btV2","btX2","btX2",0];
> arrQuestao[2] = ["btV3","btX3","btX3",0];
>
> usuario.setGabarito(arrQuestao);
>
>
> thanks for any help,
> rodrigo.
> _______________________________________________
> Flashcoders mailing list
> Flashcoders@chattyfig.figleaf.com
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> Geen virus gevonden in het binnenkomende-bericht.
> Gecontroleerd door AVG - www.avg.com
> Versie: 9.0.830 / Virusdatabase: 271.1.1/2974 - datum van uitgifte: 
> 06/30/10
> 20:38:00
>
> 


_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to