Quiz in as3 error - actionscript-3

I've been trying to make quiz but i get bunch of errors that say:The public attribute can only be used inside a package.
package
{
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
* #author Ilija
*/
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
private var ButtonI:Loader = new Loader();
I get errors for all these vars
private var ButtonI2:Loader = new Loader();
private var ButtonI3:Loader = new Loader();
private var Button1:Sprite = new Sprite();
private var Button2:Sprite = new Sprite();
private var Button3:Sprite = new Sprite();
private var QuestionText:TextField = new TextField();
private var A1Text:TextField = new TextField();
private var A2Text:TextField = new TextField();
private var A3Text:TextField = new TextField();
private var pointText:TextField = new TextField();
private var point:int = 0;
private var _questions:Questions;
public function Main():void

I have seen this error when you have { without a matching }
make sure you have an opening with closing curly brackets all over...

Related

as3 embedded images won't appear

I'm trying to create something like Assets manager, where I would embed bunch of images in one class and then pass them to other classes for further use. The problem is, after doing all the work, the images simply wont appear, not all of them. From total 41 images I get about 23 to render/display properly. I triple checked all the code, tried in both Flashdevelop and Flash Professional, tried to add each image to it's own MovieClip or Sprite before adding them to stage, tried adding them one by one with addChild method (without using for loop) and still no success... Also there is no compile error (neither syntax).
Is there something like "max embedded image count" for flashdevelop or flash professional?
Here is the code:
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.MovieClip;
import flash.display.Sprite;
public class AssetsLoader extends MovieClip
{
[Embed(source = "assets/map800x500.jpg")] private var _layer0Class:Class; public var layer0:Bitmap = new _layer0Class();
[Embed(source = "assets/al/AFR_01.png")] private var AFR_01_Class:Class; public var AFR_01:Bitmap = new AFR_01_Class() as Bitmap;
[Embed(source = "assets/al/AFR_02.png")] private var AFR_02_Class:Class; public var AFR_02:Bitmap = new AFR_02_Class() as Bitmap;
[Embed(source = "assets/al/AFR_03.png")] private var AFR_03_Class:Class; public var AFR_03:Bitmap = new AFR_03_Class() as Bitmap;
[Embed(source = "assets/al/AFR_04.png")] private var AFR_04_Class:Class; public var AFR_04:Bitmap = new AFR_04_Class() as Bitmap;
[Embed(source = "assets/al/AFR_05.png")] private var AFR_05_Class:Class; public var AFR_05:Bitmap = new AFR_05_Class() as Bitmap;
[Embed(source = "assets/al/AFR_06.png")] private var AFR_06_Class:Class; public var AFR_06:Bitmap = new AFR_06_Class() as Bitmap;
[Embed(source = "assets/al/ASI_01.png")] private var ASI_01_Class:Class; public var ASI_01:Bitmap = new ASI_01_Class() as Bitmap;
[Embed(source = "assets/al/ASI_02.png")] private var ASI_02_Class:Class; public var ASI_02:Bitmap = new ASI_02_Class() as Bitmap;
[Embed(source = "assets/al/ASI_03.png")] private var ASI_03_Class:Class; public var ASI_03:Bitmap = new ASI_03_Class() as Bitmap;
[Embed(source = "assets/al/ASI_04.png")] private var ASI_04_Class:Class; public var ASI_04:Bitmap = new ASI_04_Class() as Bitmap;
[Embed(source = "assets/al/ASI_05.png")] private var ASI_05_Class:Class; public var ASI_05:Bitmap = new ASI_05_Class() as Bitmap;
[Embed(source = "assets/al/ASI_06.png")] private var ASI_06_Class:Class; public var ASI_06:Bitmap = new ASI_06_Class() as Bitmap;
[Embed(source = "assets/al/ASI_07.png")] private var ASI_07_Class:Class; public var ASI_07:Bitmap = new ASI_07_Class() as Bitmap;
[Embed(source = "assets/al/ASI_08.png")] private var ASI_08_Class:Class; public var ASI_08:Bitmap = new ASI_08_Class() as Bitmap;
[Embed(source = "assets/al/ASI_09.png")] private var ASI_09_Class:Class; public var ASI_09:Bitmap = new ASI_09_Class() as Bitmap;
[Embed(source = "assets/al/ASI_10.png")] private var ASI_10_Class:Class; public var ASI_10:Bitmap = new ASI_10_Class() as Bitmap;
[Embed(source = "assets/al/ASI_11.png")] private var ASI_11_Class:Class; public var ASI_11:Bitmap = new ASI_11_Class() as Bitmap;
[Embed(source = "assets/al/AUS_01.png")] private var AUS_01_Class:Class; public var AUS_01:Bitmap = new AUS_01_Class() as Bitmap;
[Embed(source = "assets/al/AUS_02.png")] private var AUS_02_Class:Class; public var AUS_02:Bitmap = new AUS_02_Class() as Bitmap;
[Embed(source = "assets/al/AUS_03.png")] private var AUS_03_Class:Class; public var AUS_03:Bitmap = new AUS_03_Class() as Bitmap;
[Embed(source = "assets/al/AUS_04.png")] private var AUS_04_Class:Class; public var AUS_04:Bitmap = new AUS_04_Class() as Bitmap;
[Embed(source = "assets/al/EUR_01.png")] private var EUR_01_Class:Class; public var EUR_01:Bitmap = new EUR_01_Class() as Bitmap;
[Embed(source = "assets/al/EUR_02.png")] private var EUR_02_Class:Class; public var EUR_02:Bitmap = new EUR_02_Class() as Bitmap;
[Embed(source = "assets/al/EUR_03.png")] private var EUR_03_Class:Class; public var EUR_03:Bitmap = new EUR_03_Class() as Bitmap;
[Embed(source = "assets/al/EUR_04.png")] private var EUR_04_Class:Class; public var EUR_04:Bitmap = new EUR_04_Class() as Bitmap;
[Embed(source = "assets/al/EUR_05.png")] private var EUR_05_Class:Class; public var EUR_05:Bitmap = new EUR_05_Class() as Bitmap;
[Embed(source = "assets/al/EUR_06.png")] private var EUR_06_Class:Class; public var EUR_06:Bitmap = new EUR_06_Class() as Bitmap;
[Embed(source = "assets/al/EUR_07.png")] private var EUR_07_Class:Class; public var EUR_07:Bitmap = new EUR_07_Class() as Bitmap;
[Embed(source = "assets/al/NAM_01.png")] private var NAM_01_Class:Class; public var NAM_01:Bitmap = new NAM_01_Class() as Bitmap;
[Embed(source = "assets/al/NAM_02.png")] private var NAM_02_Class:Class; public var NAM_02:Bitmap = new NAM_02_Class() as Bitmap;
[Embed(source = "assets/al/NAM_03.png")] private var NAM_03_Class:Class; public var NAM_03:Bitmap = new NAM_03_Class() as Bitmap;
[Embed(source = "assets/al/NAM_04.png")] private var NAM_04_Class:Class; public var NAM_04:Bitmap = new NAM_04_Class() as Bitmap;
[Embed(source = "assets/al/NAM_05.png")] private var NAM_05_Class:Class; public var NAM_05:Bitmap = new NAM_05_Class() as Bitmap;
[Embed(source = "assets/al/NAM_06.png")] private var NAM_06_Class:Class; public var NAM_06:Bitmap = new NAM_06_Class() as Bitmap;
[Embed(source = "assets/al/NAM_07.png")] private var NAM_07_Class:Class; public var NAM_07:Bitmap = new NAM_07_Class() as Bitmap;
[Embed(source = "assets/al/NAM_08.png")] private var NAM_08_Class:Class; public var NAM_08:Bitmap = new NAM_08_Class() as Bitmap;
[Embed(source = "assets/al/NAM_09.png")] private var NAM_09_Class:Class; public var NAM_09:Bitmap = new NAM_09_Class() as Bitmap;
[Embed(source = "assets/al/SAM_01.png")] private var SAM_01_Class:Class; public var SAM_01:Bitmap = new SAM_01_Class() as Bitmap;
[Embed(source = "assets/al/SAM_02.png")] private var SAM_02_Class:Class; public var SAM_02:Bitmap = new SAM_02_Class() as Bitmap;
[Embed(source = "assets/al/SAM_03.png")] private var SAM_03_Class:Class; public var SAM_03:Bitmap = new SAM_03_Class() as Bitmap;
[Embed(source = "assets/al/SAM_04.png")] private var SAM_04_Class:Class; public var SAM_04:Bitmap = new SAM_04_Class() as Bitmap;
public var allTerritories:Array = [AFR_01, AFR_02, AFR_03, AFR_04, AFR_05, AFR_06,
ASI_01, ASI_02, ASI_03, ASI_04, ASI_05, ASI_06, ASI_07, ASI_08, ASI_09, ASI_10, ASI_11,
AUS_01, AUS_02, AUS_03, AUS_04,
EUR_01, EUR_02, EUR_03, EUR_04, EUR_05, EUR_06, EUR_07,
NAM_01, NAM_02, NAM_03, NAM_04, NAM_05, NAM_06, NAM_07, NAM_08, NAM_09,
SAM_01, SAM_02, SAM_03, SAM_04];
public var alphaContainer:MovieClip = new MovieClip();
public function AssetsLoader()
{
for (var i:int = 0; i < allTerritories.length; i++)
{
alphaContainer.addChild(allTerritories[i]);
alphaContainer.getChildAt(i).alpha = 1;
}
}
}
}
In another class I'm adding "alphaContainer" to stage:
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
[SWF(width = "800", height = "500", backgroundColor = "#222222", frameRate = "60")]
public class GameMap extends MovieClip
{
public var map:AssetsLoader = new AssetsLoader();
public function GameMap()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init():void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
addChild(map.alphaContainer);
}
}
}
I once had a similar problem, and when I run my SWF in a debugger, it turned out that there's some runtime library missing which is required for loading embedded content. It was related to a compiler warning which appeared in my command line when compiling:
Warning: This compilation unit did not have a factoryClass specified in Frame metadata to load the configured runtime shared libraries. To compile without runtime shared libraries either set the -static-link-runtime-shared-libraries option to true or remove the -runtime-shared-libraries option.
When I added the -static-link-runtime-shared-libraries option, it started working.
Maybe the cause of your problem is the same?

Mousechildren Issue

Consider the following code.
var sParent:Sprite = new Sprite();
var obj:Sprite = new Sprite();
var childA:Sprite = new Sprite();
var childB:Sprite = new Sprite();
sParent.addChild(obj);
obj.addChild(childA);
obj.addChild(childB);
childB.mouseChildren = false;
childB.mouseEnabled = false;
sParent.addEventListener(MouseEvent.CLICK, itemClickHandler);
sParent.addEventListener(MouseEvent.ROLL_OVER, onHoverIn);
sParent.addEventListener(MouseEvent.ROLL_OUT, onHoverOut);
Now, I want to detect events on "ChildA" but I do not want to detect children on "ChildB"
mouseChildren = false;
obviously isn't the solution in this particular case. Any ideas?
Looks like it is a limitation or a design feature of ROLL_OVER, check the following program I have changed the ROLL_OVER event to MOUSE_OVER and target and currentTarget are giving the correct sprites :
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var sParent:Sprite = new Sprite();
var obj:Sprite = new Sprite();
var childA:Sprite = new Sprite();
childA.graphics.beginFill(0xff0000);
childA.graphics.drawRect(0, 0, 100, 50);
childA.graphics.endFill();
var childB:Sprite = new Sprite();
childB.x = 150;
childB.graphics.beginFill(0x00ff00);
childB.graphics.drawRect(0, 0, 100, 50);
childB.graphics.endFill();
sParent.addChild(obj);
obj.addChild(childA);
obj.addChild(childB);
childB.mouseChildren = false;
childB.mouseEnabled = false;
sParent.mouseEnabled = false;
obj.mouseEnabled = false;
sParent.addEventListener(MouseEvent.CLICK, itemClickHandler);
sParent.addEventListener(MouseEvent.MOUSE_OVER, onHoverIn);
sParent.addEventListener(MouseEvent.MOUSE_OUT, onHoverOut);
addChild(sParent);
}
private function onHoverOut(e:MouseEvent):void
{
trace(e.currentTarget.name+ " "+e.target.name);
}
private function onHoverIn(e:MouseEvent):void
{
trace(e.currentTarget.name+ " "+e.target.name);
}
private function itemClickHandler(e:MouseEvent):void
{
trace(e.currentTarget.name+ " "+e.target.name);
}
}
}
I had the same problem and solved it with something really unexpectable...
var obj:Sprite = new Sprite();
var childA:Sprite = new Sprite();
var childB:Sprite = new Sprite();
obj.addChild(childA);
obj.addChild(childB);
obj.mouseEnabled = false; // this.
childB.mouseEnabled = false;
childB.mouseChildren = false;

AS3.0 Augmented Reality 1046 Error

I am having an Error on the loop function can anyone tell me what i am doing wrong?
I think my syntax is good?
Severity and Description Path Resource Location Creation Time Id
1046: Type was not found or was not a compile-time constant: Event. ar/src ar.as line 94 1318225764229 228
package {
import flash.display.Sprite;
import org.papervision3d.objects.primitives.Cube;
[SWF(width="640", height="480", framerate="30", backgroundColor="#ffffff")]
public class ar extends Sprite
{
// Embed the marker.pat file
[Embed(source="marker.pat", mimeType="application/octet-stream")]
private var marker:Class;
// Embed the camera.pat file
[Embed(source="camera_para.dat", mimeType="application/octet-stream")]
private var cam_params:Class;
// createFLAR Vars
private var ar_params:FLARParam;
private var ar_marker:FLARCode;
// createCAM Vars
private var ar_vid:Video;
private var ar_cam:Camera;
// createBMP Vars
private var ar_bmp:BitmapData;
private var ar_raster:FLARRgbRaster_BitmapData;
private var ar_detection:FLARSingleMarkerDetector;
// createPapervision Vars
private var ar_scene:Scene3D;
private var ar_3dcam:FLARCamera3D;
private var ar_basenode:FLARBaseNode;
private var ar_viewport:Viewport3D;
private var ar_renderengine:BasicRenderEngine;
private var ar_transmat:FLARTransMatResult;
private var ar_cube:Cube;
public function ARProj()
{
createFLAR();
createCAM();
createBMP();
createPapervision();
addEventListener(Event.ENTER_FRAME, loop);
}
public function createFLAR()
{
ar_params = new FLARParam();
ar_marker = new FLARCode();
ar_params.loadParam(new cam_params() as ByteArray);
ar_marker.loadARPatt(new marker());
}
public function createCAM()
{
ar_vid = new Video(640, 480);
ar_cam = Camera.getCamera();
ar_cam.setMode(640,480,30);
ar_vid.attachCamera(ar_cam);
addChild(ar_vid);
}
public function createBMP()
{
ar_bmp = new BitmapData(640,480);
ar_bmp.draw(ar_vid);
ar_raster = new FLARRgbRaster_BitmapData(ar_bmp);
ar_raster = new FLARSingleMarkerDetector(ar_params, ar_marker, 80);
}
public function createPapervision()
{
ar_scene = new Scene3D();
ar_3dcam = new FLARCamera3D(ar_params);
ar_basenode = new FLARBaseNode();
ar_renderengine = new BasicRenderEngine();
ar_transmat = new FLARTransMatResult();
ar_viewport = new Viewport3D();
var ar_light:PointLight3D = new PointLight3D();
ar_light.x = 1000;
ar_light.y = 1000;
ar_light.z = -1000;
var ar_bitmap:BitmapMaterial;
ar_bitmap = new BitmapFileMaterial("image.jpeg");
ar_bitmap.doubleSided = true;
ar_cube = new Cube(new MaterialsList({all:ar_bitmap}), 80, 80, 80);
ar_scene.addChild(ar_baseNnode);
ar_basenode.addChild(ar_cube);
addChild(ar_viewport);
}
public function loop(e:Event):void
{
ar_bmp.draw(ar_vid);
ar_cube.rotationX +=4;
ar_cube.rotationY +=6;
try
{
if (ar_detection.detectMarkerLite(ar_raster, 80) && ar_detection.getConfidence() > 0)
{
ar_detection.getTransformMatrix(ar_transmat);
ar_basenode.setTransformMatrix(ar_transmat);
ar_renderengine.renderScene(ar_scene, ar_3dcam, ar_viewport);
}
}
catch(e:Error){
}
}
}
}
import flash.events.Event;
You have not imported Event class. Add this import.
You're missing the import for the event Class (and probably more).

AS3 object array to class

I am new and having an issue with the use of classes in as3.
I have created an array of objects in my main timeline
function badPlayer()
{
var bads:Array = new Array();
for (var i=0; i<5; i++)
{
var mc = new bman();
mc.name=["mc"+i];
bads.push(mc);
_backGround.addChild(mc);
mc.x = 100;
mc.y = 100;
trace (bads);
Baddies(_backGround.mc); //here I am trying to export mc to my class
}
}
Here is a snip-it from my class. My trace statement wont even output.
public class Baddies extends MovieClip
{
private var pistolSound:pistolShot = new pistolShot();
//private var mc = new mc();
private var _rotateSpeedMax:Number = 2;
private var _gravity:Number = .68;
private var _bulletSpeed:Number = 2;
private var _maxDistance:Number = 200;
private var _reloadSpeed:Number = 500; //milliseconds
private var _barrelLength:Number = 20;
private var _bulletSpread:Number = 5;
private var _isLoaded:Boolean = true;
private var _isFiring:Boolean = true;
private var _endX:Number;
private var _endY:Number;
private var _startX:Number;
private var _startY:Number;
private var _reloadTimer:Timer;
private var _bullets:Array = [];
private var _gun:MovieClip;
private var _enemy:MovieClip;
private var _yx:Number;
private var _yy:Number;
private var _pcos:Number;
private var _psin:Number;
private var _trueRotation:Number;
public function Baddies()
{
trace("working");
stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
Basically I am trying to create several bad guys (bman) and have the same code apply to each of them. I have also tried to change the linkage name of bman to Baddies with no success.
There are a few thing that are very wrong with this code.
Baddies(_backGround.mc); //here I am trying to export mc to my class
This is a typecast, as already stated in the comments. By the way Baddies isn't a good name, because it plural. You probably want to create a new bad guy, which would be done with this line:
var baddie = new Baddies();
Now your constructor uses the stage variable. This won't work because the object isn't on the stage, therefore stage is null (it may works if you drag and drop an instance to the stage in the editor). So before using the stage you actually need to add the object to the stage:
public function Baddies() {
trace("new baddie created");
}
public function init(mc:MovieClip) {
mc.addChild(this); // display this baddie
trace("working");
stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
And in the badPlayer function:
var baddie = new Baddies();
baddie.init(_backGround);

Trouble with null reference on stage properties in AS3

I am making a website in Flash, coded in flashbuilder. Whenever I try to export my code I get the same error again and again (TypeError = see below).
I think the problem has something to do with the stage of my project. Whenever I change the var stageMiddenX = (stage.stageWidth / 2); into var stageMiddenX = 512;, the code works. but I wan't the var to be dynamic.
TypeError
Error #1009: cannot access a property or method of a null object reference at main()
package {
import flash.display.MovieClip;
public class main extends MovieClip{
var stageMiddenX = (stage.stageWidth / 2);
var stageMiddenY = (stage.stageHeight / 2);
private var object1:Object1 = new Object1();
private var object2:Object2 = new Object2();
private var object3:Object3 = new Object3();
}
}
The issue here is that stage is not yet available at the time you are requesting it.
You'll want to wait until the Event.ADDED_TO_STAGE event is fired before attempting to acccess stage.
package {
import flash.display.MovieClip;
public class main extends MovieClip{
private var object1:Object1 = new Object1();
private var object2:Object2 = new Object2();
private var object3:Object3 = new Object3();
private var stageMiddenX:Number;
private var stageMiddenY:Number;
public function main(){
if(stage) init(null);
else addEventListener(Event.ADDED_TO_STAGE, init)
}
private function init(e:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
stageMiddenX = (stage.stageWidth / 2);
stageMiddenY = (stage.stageHeight / 2);
}
}
}
Put the stuff accessing stage into a constructor (assuming this is your document class)..
package
{
import flash.display.MovieClip;
public class main extends MovieClip
{
public var stageMiddenX:int;
public var stageMiddenY:int;
private var object1:Object1 = new Object1();
private var object2:Object2 = new Object2();
private var object3:Object3 = new Object3();
public function main()
{
stageMiddenX = stage.stageWidth / 2;
stageMiddenY = stage.stageHeight / 2;
}
}
}