ActionScript 3.0 :: Flash - Class Constructor Not Being Run?
Nov 22, 2010
i have some pretty simple code, i have my document class trying to add a santa class to the stage (simple game ) - but it will not add and i get not errors at all,Santa class:
I have a custom class, MyMC. The only argument the constructor takes is a string, which sets the text of a label inside MyMC.
In the Flash IDE I've placed an instance of MyMC, which is called mcOnStage, on the stage. Through the document's class Main I'd want to perform the constructor function of mcOnStage.
Some of the top level classes can be instantiated as well as called as a function (e.x. new Number() and Number(), new Boolean() and Boolean(), new Array() and Array()).
Usually this is used for type conversion or as a shortcut for instantiation. I would like to be able to do the same thing:
[Code]...
What I wanted to do originally was to create a logging class to interact with Flash/JavaScript, and be cross-browser compatible. I wanted to be able to use the log function as an alias of a method in the log class. This got me to wondering whether I could implement a custom casting function just because. I've now realized it's not possible, but was fun to play with anyway.
here is the scenario we ran across while working on our Flash AS3 project today.
/main/root.fla /main/root.as /main/sub1/sub.fla
[code]....
We have many sub swf's that are loaded by the main root swf. The root swf shows the art on the stage of the sub swf, and also runs some code from the sub swf's document class. However, we noticed the constructor was not getting called on the second sub swf if the document class is the same name- even if they are in different folders. Note that we publish our swf files to a separate directory (with the same structure as above) so it is easily copied to the web server.
-root.swf loads sub1/sub.swf -the constructor of the document class sub.as in subfolder sub1 gets called -root.swf shows sub1/sub.swf assets with the correctly constructed sub1/sub.as document class -user chooses to switch to sub2
[code]...
We decided to use a workaround where we basically changed the two document class .as files to be different names (e.g. renamed sub1/sub.as -> sub1/sub1.as and sub2/sub.as -> sub2/sub2.as, and updated the .fla's to point to the renamed document classes), and it works as expected. Hopefully that workaround is useful for someone.I realize most people just name every single file differently and keep everything in one folder, but when you have a sufficiently complicated project, things like this come up.
have a movieclip on the stage, whose Class is "com.nestor.elements.letterKey". The class funcKey extends "key" which contains a "public var val:String". I have many instances of letterKey(asdfghj.... a full keyboard), so I'd like to use the IDE to arrange and pass variables. SO, within the Flash IDE/Library, I rightclick the symbol to access its component definition, and add a parameter for the var in the baseclass name:value,variable:var,default:whatever,type:Str ing).Now, in the constructor function for the baseclass, if I trace my variable: it is null.
I'm having a little trouble with my move to as3, (surprise surprise huh?) Basically when I create a movieclip, I wan't to pass some values into it, like so:
(Spoiler alert: It's not an issue of my package statement not reflecting the location of my class file.) When I have a class linked to a MovieClip in my library and that class takes an argument in its constructor method. That class will compile properly ONLY when it's located in my top-level directory (same dir as the .fla and Document.as files). If I move that class to a deeper directory, say com.place, the compiler will generate error "1136: Incorrect number of arguments. Expected 0.
I am creating a Weapon class for a game and the weapons itself will be the sub classes. The sub classes will hard code some values (such as max ammo and the weapon name).
I trying to access this declared data in the base class constructor, at the moment it's not outputting the values. Is this possible?
My current workaround is creating a protected method in the base class to trace the information and calling that method in the sub class's constructor, this works fine but this doesn't seem like the most efficient technique?
There is a library component represented by Class A. But constructor of this class requires some parameters. When the component needs to be added dynamically, it's fine because of code :
var abc:A = new A(param1,param2)
But what if my movieclip is already present on the stage. I notice it gives out error, that the parameters are null.
Is their any way to insert constructor parameters for movieclips already on stage.
I am trying to things efficiently and put as little code as possible on the timeline.
I have a document class loading and working at runtime.
It creates a button that takes me to a different frame on the timeline.
I have a movie clip there. I put a trace in the constructor of the class of that movie clip but it will not show the trace comment in the output window-its not working. There are no errors.
I also tried instantiating the same movie clip from the document class-which worked-but the trace in it's class's constructor still does not output.
I'm making a class called 'player', and really, I don't need a constructor function for it. Do you just outline the function, but don't put anything between the curly braces? Also, I'm a bit new with access levels. If I wanted my functions from my player class to be accessible from the main class, do I make them public?
For Example: package{ public class A { var test:String; public function A() }} class B{ } The code is in the same file, we call B is inner class, then how to call the constructor of class B
I'm doing something - probably very stupid - with an external library swf. That swf so far contains two buttons each with their own classes 'Simple_Button' and 'Simple_Pop_Button'. In the library swf document class I set up an object that lists the available classes:
In the AS3 there is a remark, that a Class Constructor is just a method of the class, that is executed when an object of that class is created. So, since the constructor is just a method of a class, how can I call it directly from the other class methods?
I fell on an unexpected comportment with AS3 class definitions this morning. To tell it quickly, I cannot create an instance of a class inside the same class methods.
Here is an exemple :
package { import flash.display.MovieClip; import flash.events.Event; public class Test extends MovieClip {
[code]....
I would like to understand the sub-process that prevents to do that.
I have a document class name elevator and my constructor is also elevator as usualHow to call this constructor function within elevator class? Is is possible or not?
constructor function in a Class file. I've built several over my day and never heard a 'proper' answer about them. If your constructor function does nothing, not even set vars or listeners
ActionScript Code: public function MyClass():void{ }
is it proper to keep it in the Class file or is it ok to leave it out completely?Or is this just something of preference? What do you guys think/do?
i have been working on this project. I made a class with a empty blank symbol.
package { public class imgHold extends MovieClip { public function imgHold (imgSrc:String)[code]....
I want to be able to add this class on my stage and put in a string in the contructor parameter and the class will display w/e symbol accordingly. How would i make this class link to different symbols depending on the parameter in the contructor?
This is my first post. I'm new to actionscript, but not to programming. I hope to learn a lot from these forums. To the point: I decided a few days ago that I wanted to create a flash game. I'm taking an object-oriented approach to the game design since that is what I know. The issue I am having is that I have a class called Hero that inherits from a class called Entity. Now my issue is that I don't want Hero to call the Entities class constructor when I initialize a new Entity.
I'm currently writing a class where I'd like to call the class constructor without having to instantiate the class itself. Something like this : Class:
[Code]...
trace(testString); //wil trace the text "test test123" Is it possible to somehow achieve this? When I write the costructor method like "public static function ClassName" it fails. Is there any other way?
I have flash application with main document class, components which are on the scene are instancied at runtime, contrustor of these components are call before main class, but i'd like to execute code before main class and components instanciation, how can i do this ? i tried to create an actionscript layer at frame 1 but still not work.