TypeError: Error #1009 for Card Game [as3]
- wjordan87
- Born


- Joined: Oct 18, 2011
- Posts: 2
- Status: Offline
Here is my code...
I think the problem has something to do with one of the vars being established when it shouldn't but I'm not sure.
I think the problem has something to do with one of the vars being established when it shouldn't but I'm not sure.
ACTIONSCRIPT Code: [ Select ]
//--------IMPORT AWAY 3D-------//
import away3d.cameras.*;
import away3d.containers.*;
import away3d.materials.*;
import away3d.primitives.Plane;
import away3d.containers.ObjectContainer3D;
import away3d.core.math.Number3D;
//------IMPORT TWEENERS-------//
import caurina.transitions.*;
import flash.display.InteractiveObject;
import flash.display.Bitmap;
import flashx.textLayout.conversion.PlainTextExporter;
import flash.display.BitmapData;
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
//-------SET UP VARIABLES------//
//variable for the scene
var scene:Scene3D;
//variable for camera - angle
var camera:Camera3D;
//variable for view
var view:View3D;
//number of cards that you want to have
var totalchildren:int = 10;
//set up array to hold the cards
var cards:Array;
//array to hold the front of the cards
var textures:Array = [new texture0(0,0),
new texture1(0,0),
new texture2(0,0),
new texture3(0,0),
new texture4(0,0)];
//get the back of the cards
var backtexture:BitmapData = new CardBack(0,0);
//set width and height
var cardwidth:Number = 150;
var cardheight:Number = 205;
//distance between each card
var xoffset:Number = 10;
var yoffset:Number = 10;
//create an object to hold all the cards
var cardsholder:ObjectContainer3D;
//create the sides of the selected card
var selectedCard1:Plane;
var selectedCard2:Plane;
//disable mouse events - gives us control over every card
var disableMouseEvents:Boolean = false;
//------------FUNCTIONS-------------//
//----------Establish Scene/Viewing Area---------//
function initAway3D():void{
var scene = new Scene3D;
var camera = new Camera3D;
//position the camera
camera.y = 1000; //works like a zoom
camera.z = 0;
camera.lookAt(new Number3D(0,0,0));
//create and position the view
var view = new View3D({scene:scene, camera:camera});
//put the view on the stage
view.x = stage.stageWidth/2;
view.y = stage.stageHeight/2;
addChild(view);
}
//-----Create One of the Carfds------//
function createCard(texture:BitmapData, id:int):ObjectContainer3D{
var card:ObjectContainer3D = new ObjectContainer3D();
//var for the front
var front:Plane = new Plane({width:cardwidth, height:cardheight, material:new BitmapMaterial(texture,{smmoth:true})});
//var for the back
var back:Plane = new Plane({width:cardwidth, height:cardheight, material:new BitmapMaterial(backtexture,{smmoth:true})});
//positioning
front.rotationY = 180;
back.rotationZ = 180;
back.rotationY = 180;
//access id - use to determine the matches
back.extra = {};
back.extra.id = id;
back.extra. targetCard = card;
back.addOnMouseDown(onBackClicked);
//spin moves
card.rotationZ = 180;
card.addChild(front);
card.addChild(back);
card.ownCanvas = true;
//create the card
return card;
}
//--------Create the rest of the cards----------//
function allCards():void{
var cards = new Array();
//(starts at 0, goes until it reaches the end of array, increases by 1)
for(var i:int=0; i<textures.length; i++){
//create the first card
var card1:ObjectContainer3D = createCard(textures[i],i);
//create it's match
var card2:ObjectContainer3D = createCard(textures[i],i);
//create it's match
//var card3:ObjectContainer3D = create Card(textures[i],i);
//create it's match
//var card4:ObjectContainer3D = create Card(textures[i],i);
cards.push(card1);
cards.push(card2);
}
}
//-------- SHUFFLE/RANDOMIZE CARDS---------//
function randomizeCards():void{
//var to hold random order of cards
var newArray:Array = new Array();
while(cards.length>0){
newArray.push(cards.splice(Math.floor(Math.random()*cards.length),1)[0]);
}
cards = newArray;
}
//-------Add Cards to the Scene-------//
function addCardsToScene():void{
//var that holds everything
var cardsholder = new ObjectContainer3D();
//how many cards we currently have
var cardNumber:int = 0;
//create the grid
//vertical part of the grid - number of rows
for(var i:int = 0; i<2; i++){
//number of columns
for(var b:int = 0; b<5; b++){
cards[cardNumber].x = b*(cardwidth+xoffset)+cardwidth/2;
cards[cardNumber].z = i*(cardheight+yoffset)+cardheight/2;
cardsholder.addChild(cards[cardNumber]);
cardNumber++;
}
}
var cardswidth:Number = (5*cardwidth) + (4*xoffset);
var cardsheight:Number = (2*cardheight) + (1*yoffset);
//position
cardsholder.x = cardswidth/2;
cardsholder.y = cardsheight/2;
//add to the scene
scene.addChild(cardsholder);
}
//-------------------CLICK FUNCTIONS-----------------//
function onBackClicked(event:Event):void{
if(disableMouseEvents==false){
if(selectedCard1==null){
selectedCard1 = event.currentTarget as Plane;
}
else{
if(selectedCard2==null){
selectedCard2=event.currentTarget as Plane;
waitForDecision();
disableMouseEvents=true;
}
}
Tweener.addTween(event.currentTarget.extra.targetCard,{y:50, rotationZ:0, time:1});
}
}
//---------DEFINE THE DECISION-----------//
function waitForDecision():void{
var timer:Timer = new Timer(1000, 1);
timer.addEventListener(TimerEvent.TIMER, makeDecision);
timer.start();
}
//----------WHAT TO DO IF RIGHT OR WRONG-----------//
function makeDecision(event:Event):void{
//if it matches = right
if(selectedCard1.extra.id == selectedCard2.extra.id){
Tweener.addTween(selectedCard1.extra.targetCard,{alpha:0, time:0.3, onComplete:removeCard, onCompleteParams:[selectedCard1.extra.targetCard]});
Tweener.addTween(selectedCard2.extra.targetCard,{alpha:0, time:0.3, onComplete:removeCard, onCompleteParams:[selectedCard1.extra.targetCard]});
}
//if its wrong
else{
Tweener.addTween(selectedCard1.extra.targetCard,{y:0, rotationZ:180, time:1});
Tweener.addTween(selectedCard2.extra.targetCard,{y:0, rotationZ:180, time:1});
}
//reset variables for mouse clicks, and card slection
disableMouseEvents = false;
selectedCard1=null;
selectedCard2=null;
}
//-------DEFINE REMOVE CARD FUNCTION----------//
function removeCard(event:ObjectContainer3D):void{
cardsholder.removeChild(event);
totalchildren--;
if(totalchildren==0){
trace("WIN");
}
}
//---------------RENDER EVERYTHING-------------//
function startToRender():void{
addEventListener(Event.ENTER_FRAME, render);
}
function render(event:Event):void{
view.render();
}
//------------CALL ALL THE FUNCTIONS---------//
initAway3D();
allCards();
randomizeCards();
addCardsToScene();
startToRender();
import away3d.cameras.*;
import away3d.containers.*;
import away3d.materials.*;
import away3d.primitives.Plane;
import away3d.containers.ObjectContainer3D;
import away3d.core.math.Number3D;
//------IMPORT TWEENERS-------//
import caurina.transitions.*;
import flash.display.InteractiveObject;
import flash.display.Bitmap;
import flashx.textLayout.conversion.PlainTextExporter;
import flash.display.BitmapData;
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
//-------SET UP VARIABLES------//
//variable for the scene
var scene:Scene3D;
//variable for camera - angle
var camera:Camera3D;
//variable for view
var view:View3D;
//number of cards that you want to have
var totalchildren:int = 10;
//set up array to hold the cards
var cards:Array;
//array to hold the front of the cards
var textures:Array = [new texture0(0,0),
new texture1(0,0),
new texture2(0,0),
new texture3(0,0),
new texture4(0,0)];
//get the back of the cards
var backtexture:BitmapData = new CardBack(0,0);
//set width and height
var cardwidth:Number = 150;
var cardheight:Number = 205;
//distance between each card
var xoffset:Number = 10;
var yoffset:Number = 10;
//create an object to hold all the cards
var cardsholder:ObjectContainer3D;
//create the sides of the selected card
var selectedCard1:Plane;
var selectedCard2:Plane;
//disable mouse events - gives us control over every card
var disableMouseEvents:Boolean = false;
//------------FUNCTIONS-------------//
//----------Establish Scene/Viewing Area---------//
function initAway3D():void{
var scene = new Scene3D;
var camera = new Camera3D;
//position the camera
camera.y = 1000; //works like a zoom
camera.z = 0;
camera.lookAt(new Number3D(0,0,0));
//create and position the view
var view = new View3D({scene:scene, camera:camera});
//put the view on the stage
view.x = stage.stageWidth/2;
view.y = stage.stageHeight/2;
addChild(view);
}
//-----Create One of the Carfds------//
function createCard(texture:BitmapData, id:int):ObjectContainer3D{
var card:ObjectContainer3D = new ObjectContainer3D();
//var for the front
var front:Plane = new Plane({width:cardwidth, height:cardheight, material:new BitmapMaterial(texture,{smmoth:true})});
//var for the back
var back:Plane = new Plane({width:cardwidth, height:cardheight, material:new BitmapMaterial(backtexture,{smmoth:true})});
//positioning
front.rotationY = 180;
back.rotationZ = 180;
back.rotationY = 180;
//access id - use to determine the matches
back.extra = {};
back.extra.id = id;
back.extra. targetCard = card;
back.addOnMouseDown(onBackClicked);
//spin moves
card.rotationZ = 180;
card.addChild(front);
card.addChild(back);
card.ownCanvas = true;
//create the card
return card;
}
//--------Create the rest of the cards----------//
function allCards():void{
var cards = new Array();
//(starts at 0, goes until it reaches the end of array, increases by 1)
for(var i:int=0; i<textures.length; i++){
//create the first card
var card1:ObjectContainer3D = createCard(textures[i],i);
//create it's match
var card2:ObjectContainer3D = createCard(textures[i],i);
//create it's match
//var card3:ObjectContainer3D = create Card(textures[i],i);
//create it's match
//var card4:ObjectContainer3D = create Card(textures[i],i);
cards.push(card1);
cards.push(card2);
}
}
//-------- SHUFFLE/RANDOMIZE CARDS---------//
function randomizeCards():void{
//var to hold random order of cards
var newArray:Array = new Array();
while(cards.length>0){
newArray.push(cards.splice(Math.floor(Math.random()*cards.length),1)[0]);
}
cards = newArray;
}
//-------Add Cards to the Scene-------//
function addCardsToScene():void{
//var that holds everything
var cardsholder = new ObjectContainer3D();
//how many cards we currently have
var cardNumber:int = 0;
//create the grid
//vertical part of the grid - number of rows
for(var i:int = 0; i<2; i++){
//number of columns
for(var b:int = 0; b<5; b++){
cards[cardNumber].x = b*(cardwidth+xoffset)+cardwidth/2;
cards[cardNumber].z = i*(cardheight+yoffset)+cardheight/2;
cardsholder.addChild(cards[cardNumber]);
cardNumber++;
}
}
var cardswidth:Number = (5*cardwidth) + (4*xoffset);
var cardsheight:Number = (2*cardheight) + (1*yoffset);
//position
cardsholder.x = cardswidth/2;
cardsholder.y = cardsheight/2;
//add to the scene
scene.addChild(cardsholder);
}
//-------------------CLICK FUNCTIONS-----------------//
function onBackClicked(event:Event):void{
if(disableMouseEvents==false){
if(selectedCard1==null){
selectedCard1 = event.currentTarget as Plane;
}
else{
if(selectedCard2==null){
selectedCard2=event.currentTarget as Plane;
waitForDecision();
disableMouseEvents=true;
}
}
Tweener.addTween(event.currentTarget.extra.targetCard,{y:50, rotationZ:0, time:1});
}
}
//---------DEFINE THE DECISION-----------//
function waitForDecision():void{
var timer:Timer = new Timer(1000, 1);
timer.addEventListener(TimerEvent.TIMER, makeDecision);
timer.start();
}
//----------WHAT TO DO IF RIGHT OR WRONG-----------//
function makeDecision(event:Event):void{
//if it matches = right
if(selectedCard1.extra.id == selectedCard2.extra.id){
Tweener.addTween(selectedCard1.extra.targetCard,{alpha:0, time:0.3, onComplete:removeCard, onCompleteParams:[selectedCard1.extra.targetCard]});
Tweener.addTween(selectedCard2.extra.targetCard,{alpha:0, time:0.3, onComplete:removeCard, onCompleteParams:[selectedCard1.extra.targetCard]});
}
//if its wrong
else{
Tweener.addTween(selectedCard1.extra.targetCard,{y:0, rotationZ:180, time:1});
Tweener.addTween(selectedCard2.extra.targetCard,{y:0, rotationZ:180, time:1});
}
//reset variables for mouse clicks, and card slection
disableMouseEvents = false;
selectedCard1=null;
selectedCard2=null;
}
//-------DEFINE REMOVE CARD FUNCTION----------//
function removeCard(event:ObjectContainer3D):void{
cardsholder.removeChild(event);
totalchildren--;
if(totalchildren==0){
trace("WIN");
}
}
//---------------RENDER EVERYTHING-------------//
function startToRender():void{
addEventListener(Event.ENTER_FRAME, render);
}
function render(event:Event):void{
view.render();
}
//------------CALL ALL THE FUNCTIONS---------//
initAway3D();
allCards();
randomizeCards();
addCardsToScene();
startToRender();
- //--------IMPORT AWAY 3D-------//
- import away3d.cameras.*;
- import away3d.containers.*;
- import away3d.materials.*;
- import away3d.primitives.Plane;
- import away3d.containers.ObjectContainer3D;
- import away3d.core.math.Number3D;
- //------IMPORT TWEENERS-------//
- import caurina.transitions.*;
- import flash.display.InteractiveObject;
- import flash.display.Bitmap;
- import flashx.textLayout.conversion.PlainTextExporter;
- import flash.display.BitmapData;
- import flash.events.Event;
- import flash.utils.Timer;
- import flash.events.TimerEvent;
- //-------SET UP VARIABLES------//
- //variable for the scene
- var scene:Scene3D;
- //variable for camera - angle
- var camera:Camera3D;
- //variable for view
- var view:View3D;
- //number of cards that you want to have
- var totalchildren:int = 10;
- //set up array to hold the cards
- var cards:Array;
- //array to hold the front of the cards
- var textures:Array = [new texture0(0,0),
- new texture1(0,0),
- new texture2(0,0),
- new texture3(0,0),
- new texture4(0,0)];
- //get the back of the cards
- var backtexture:BitmapData = new CardBack(0,0);
- //set width and height
- var cardwidth:Number = 150;
- var cardheight:Number = 205;
- //distance between each card
- var xoffset:Number = 10;
- var yoffset:Number = 10;
- //create an object to hold all the cards
- var cardsholder:ObjectContainer3D;
- //create the sides of the selected card
- var selectedCard1:Plane;
- var selectedCard2:Plane;
- //disable mouse events - gives us control over every card
- var disableMouseEvents:Boolean = false;
- //------------FUNCTIONS-------------//
- //----------Establish Scene/Viewing Area---------//
- function initAway3D():void{
- var scene = new Scene3D;
- var camera = new Camera3D;
- //position the camera
- camera.y = 1000; //works like a zoom
- camera.z = 0;
- camera.lookAt(new Number3D(0,0,0));
- //create and position the view
- var view = new View3D({scene:scene, camera:camera});
- //put the view on the stage
- view.x = stage.stageWidth/2;
- view.y = stage.stageHeight/2;
- addChild(view);
- }
- //-----Create One of the Carfds------//
- function createCard(texture:BitmapData, id:int):ObjectContainer3D{
- var card:ObjectContainer3D = new ObjectContainer3D();
- //var for the front
- var front:Plane = new Plane({width:cardwidth, height:cardheight, material:new BitmapMaterial(texture,{smmoth:true})});
- //var for the back
- var back:Plane = new Plane({width:cardwidth, height:cardheight, material:new BitmapMaterial(backtexture,{smmoth:true})});
- //positioning
- front.rotationY = 180;
- back.rotationZ = 180;
- back.rotationY = 180;
- //access id - use to determine the matches
- back.extra = {};
- back.extra.id = id;
- back.extra. targetCard = card;
- back.addOnMouseDown(onBackClicked);
- //spin moves
- card.rotationZ = 180;
- card.addChild(front);
- card.addChild(back);
- card.ownCanvas = true;
- //create the card
- return card;
- }
- //--------Create the rest of the cards----------//
- function allCards():void{
- var cards = new Array();
- //(starts at 0, goes until it reaches the end of array, increases by 1)
- for(var i:int=0; i<textures.length; i++){
- //create the first card
- var card1:ObjectContainer3D = createCard(textures[i],i);
- //create it's match
- var card2:ObjectContainer3D = createCard(textures[i],i);
- //create it's match
- //var card3:ObjectContainer3D = create Card(textures[i],i);
- //create it's match
- //var card4:ObjectContainer3D = create Card(textures[i],i);
- cards.push(card1);
- cards.push(card2);
- }
- }
- //-------- SHUFFLE/RANDOMIZE CARDS---------//
- function randomizeCards():void{
- //var to hold random order of cards
- var newArray:Array = new Array();
- while(cards.length>0){
- newArray.push(cards.splice(Math.floor(Math.random()*cards.length),1)[0]);
- }
- cards = newArray;
- }
- //-------Add Cards to the Scene-------//
- function addCardsToScene():void{
- //var that holds everything
- var cardsholder = new ObjectContainer3D();
- //how many cards we currently have
- var cardNumber:int = 0;
- //create the grid
- //vertical part of the grid - number of rows
- for(var i:int = 0; i<2; i++){
- //number of columns
- for(var b:int = 0; b<5; b++){
- cards[cardNumber].x = b*(cardwidth+xoffset)+cardwidth/2;
- cards[cardNumber].z = i*(cardheight+yoffset)+cardheight/2;
- cardsholder.addChild(cards[cardNumber]);
- cardNumber++;
- }
- }
- var cardswidth:Number = (5*cardwidth) + (4*xoffset);
- var cardsheight:Number = (2*cardheight) + (1*yoffset);
- //position
- cardsholder.x = cardswidth/2;
- cardsholder.y = cardsheight/2;
- //add to the scene
- scene.addChild(cardsholder);
- }
- //-------------------CLICK FUNCTIONS-----------------//
- function onBackClicked(event:Event):void{
- if(disableMouseEvents==false){
- if(selectedCard1==null){
- selectedCard1 = event.currentTarget as Plane;
- }
- else{
- if(selectedCard2==null){
- selectedCard2=event.currentTarget as Plane;
- waitForDecision();
- disableMouseEvents=true;
- }
- }
- Tweener.addTween(event.currentTarget.extra.targetCard,{y:50, rotationZ:0, time:1});
- }
- }
- //---------DEFINE THE DECISION-----------//
- function waitForDecision():void{
- var timer:Timer = new Timer(1000, 1);
- timer.addEventListener(TimerEvent.TIMER, makeDecision);
- timer.start();
- }
- //----------WHAT TO DO IF RIGHT OR WRONG-----------//
- function makeDecision(event:Event):void{
- //if it matches = right
- if(selectedCard1.extra.id == selectedCard2.extra.id){
- Tweener.addTween(selectedCard1.extra.targetCard,{alpha:0, time:0.3, onComplete:removeCard, onCompleteParams:[selectedCard1.extra.targetCard]});
- Tweener.addTween(selectedCard2.extra.targetCard,{alpha:0, time:0.3, onComplete:removeCard, onCompleteParams:[selectedCard1.extra.targetCard]});
- }
- //if its wrong
- else{
- Tweener.addTween(selectedCard1.extra.targetCard,{y:0, rotationZ:180, time:1});
- Tweener.addTween(selectedCard2.extra.targetCard,{y:0, rotationZ:180, time:1});
- }
- //reset variables for mouse clicks, and card slection
- disableMouseEvents = false;
- selectedCard1=null;
- selectedCard2=null;
- }
- //-------DEFINE REMOVE CARD FUNCTION----------//
- function removeCard(event:ObjectContainer3D):void{
- cardsholder.removeChild(event);
- totalchildren--;
- if(totalchildren==0){
- trace("WIN");
- }
- }
- //---------------RENDER EVERYTHING-------------//
- function startToRender():void{
- addEventListener(Event.ENTER_FRAME, render);
- }
- function render(event:Event):void{
- view.render();
- }
- //------------CALL ALL THE FUNCTIONS---------//
- initAway3D();
- allCards();
- randomizeCards();
- addCardsToScene();
- startToRender();
Moderator Remark: Inserted code in the topic with [actionscript] bbcode. Better chance of replies this way.
- Anonymous
- Bot


- Joined: 25 Feb 2008
- Posts: ?
- Loc: Ozzuland
- Status: Online
October 18th, 2011, 4:25 pm
- Bigwebmaster
- Site Admin


- Joined: Dec 20, 2002
- Posts: 8934
- Loc: Seattle, WA & Phoenix, AZ
- Status: Offline
The error you are receiving, does it happen to say what line number that is for?
Ozzu Hosting - Want your website on a fast server like Ozzu?
- wjordan87
- Born


- Joined: Oct 18, 2011
- Posts: 2
- Status: Offline
- Bigwebmaster
- Site Admin


- Joined: Dec 20, 2002
- Posts: 8934
- Loc: Seattle, WA & Phoenix, AZ
- Status: Offline
Not familiar with this error, but I looked it up and it seems that others who had this problem solved it by putting a blank frame at the beginning of the loaded swf. Try that and see if that does anything. A few others mentioned that the event listeners were causing problems for some reason.
Is this an externally called SWF, or can you explain how this SWF is supposed to work. If I am unable to help you it might provide enough information for someone else with more experience with ActionScript to help you.
Is this an externally called SWF, or can you explain how this SWF is supposed to work. If I am unable to help you it might provide enough information for someone else with more experience with ActionScript to help you.
Ozzu Hosting - Want your website on a fast server like Ozzu?
Page 1 of 1
To Reply to this topic you need to LOGIN or REGISTER. It is free.
Post Information
- Total Posts in this topic: 4 posts
- Users browsing this forum: No registered users and 29 guests
- You cannot post new topics in this forum
- You cannot reply to topics in this forum
- You cannot edit your posts in this forum
- You cannot delete your posts in this forum
- You cannot post attachments in this forum
