ActionScript 3.0 :: Make Initialization Of Class Object?
Feb 21, 2009I have two questions.First: I created this class, which supposed to create sort of 3D cube
Code:
package
{
[code].....
I have two questions.First: I created this class, which supposed to create sort of 3D cube
Code:
package
{
[code].....
So I have a movieclip that I want to play nice with my class file. So I set the linkage and all that and it works. But, my initialization function gets called with no parameters, because I have not set any. How do I do that with this method?
I've tried something like:
Code:
import tab;
tab1_mc = new tab("left", 5, 55, "testclip.swf", 0);
And that sets the parameters, but not before the linkage on the MovieClip fires. how to get the best of both worlds?
I'm having some troubles with the use of interface and inheritance in AS3. I've done lots of OOP in the past and what I'm trying to do seems obvious to me, but doesn't work in AS3. The question is : Is it possible to override a function that return an Object of class A, and make it return an Object of Class B which extends A ? It seems not to be possible, since I'm getting a signature error in Flash, when compiling. For example, the following set of class do not compile (the code in function definition doesn't matter):
[Code].....
The jist of what I'd like to know and focus on understanding, is details on how binary deserialization occurs in Flex 3. When is the constructor called, when are properties set, are private members serialized or does all deserialization occur on and through setters, etc? I'm having a hard time finding information on this.In a Flex 3 AIR application, I have a pretty complex object graph(just a bunch of objects referencing one another, kinda like a big data model except a bit more complex) that I serialize to a file using a single call on the FileStream.writeObject and readObject on a root object, which serializes and deserializes the entire object graph.I found that I needed to always have a default constructor, else I would get exceptions on the objects when deserializing if they were part of an ArrayCollection. So I had to eleminate the constructor parameters or set default values. I now have many setters like this in my classes, such as the below where mConnection accumulates some information it needs through different setters, where as before I had this all packed into the constructor since all of the information is really necesary for the Connection to function:[code]So the connection's serverIP is still an empty string because the server was assigned to the client's property before the server was completely initialized.
I could probably resolve this by using binding so that updates to the serverip in the server are bound to the connection, but I find binding properties to be fairly complicated (it's really simple on UI in mxml cause you just use the curly bracket syntax but doing it by code is what I found complicated). I have also resolved some cases by removing the constructor parameters entirely, so that there is no default values. All that aside, I still really need a deeper understanding of the details of binary serialization as far as how it rebuilds the object graph. I even have circular references, and it seems to handle those fine and maintain multiple references without duplicating objects. It's just when my constructors/setters are more complex that I'm running into these problems because of the order of what occurs during deserialization. It is really inconsistent though, as adding breakpoints in various places seems to influence the order that things occur, making it more difficult to debug.On a side note for anyone that might sidetrack the topic because I am serializing a class called Connection. I added some code to address some things, like in the Connection class there is an instance of a Socket. Of course my socket would not be connected after I close and reopen the application and deserialize it, so before I serialize my object graph, I go through and close the socket and set the reference in the Connection class to null, so that there is no longer a reference to the socket and thus it will not get serialized. After deserialization on the next application run I create a new socket.
I initialize the "point" object like:
point = {x:'209', y:'270'};
trace(point.x);
this is working fine, But I have to initialize the "point" object with a string variable which holds the initialization properties like:
[Code]...
I know this is not working. Is there any method to initialize the object with a string variable which holds the initialization properties (without parsing the text) ?
The following is that long only because I gave examples of what I want to know, not because it is complex .I have three basic questions regarding AS 3.0 classes.
1. How can I make a class object interact with an object on stage?
For example, when I have a square (mc_Square) with class "square" attached to it and I want it to trace "Colliding!" and print the X and Y of the mc_Box on contact with an on-stage *hollow* box (mc_Box) that has no class attached to it.how to do it vice-versa would also be awesome .
2. How can I make a class object interact with the same class object? For example, when I have two squares (mc_Square) that both have the class "square" attached to it and when they collide, it prints the X and Y of both of them.
3. How can I make a class object interact with a different class object?
For example, when I have two squares mc_Square1 with class "square1 (that also has a variable Primary=true written in it)" and a mc_Square2 with class "square2"; When they collide, the one with Primary=true would be removed and it's X,Y position traced.
I am still quite new to AS3, but trying to learn the essentials. What I have trouble with is this:I have a box on the stage (or frame 1 in timeline). Inside this box I made a dynamic textfield. I made a movieclip of these two together and called it watch (instance name). Also exported to actionscript with name of the class StopWatch. Now, in actions in the timeline I do this:
Code:
import classes.stopwatch.StopWatch;
var atch:StopWatch = new StopWatch();
[code].....
How can i make a self destruct function for class object?[code]
View 3 RepliesHow to create object from class that extends MovieClip
Say i have a class name MC
Code:
package {
import flash.display.MovieClip;
[Code]......
why it can't make any object since it is a MovieClip?
new to ActionScript 3 and while I'm trying to write as "clean" code as possible (creating various custom classes instead of everything in the document class for example), sometimes I stumble upon behaviors that would not arise if I had put everything in the same place.I have a project which involves fireworks which is working fine, but I'd like to add a smoke trail to the rockets (a custom class rocket object) and so far I can't get it done.
So I will ask my question first: what methodology do you use in general when you want to make a custom class object leave a trail of particles behind it? Do you include the trail generation in the class? in a separate class? on the document class?what I've been doing (and what I feel is the "cleanest" and most reusable way to do it) is to put the trail generation in the custom class rocket object. This object is just composed of some graphics and the function that generates the particles(which are another custom class).The actual handling of the firing and the movement of the rocket is done by the document class.So the problem I'm having is that when I generate a particle on a frame, if I add it to the rocket object, it follows it (local coordinates), and if I add it to the stage then I can't remove it from within the rocket object...
Is there a way to make an static method act over an object of its class that is already on the stage, without using the keyword "this"? I mean, like "generic object of this class: do what I'm telling you to do, wathever your instance name".My goal is to create an method that get called by any object of this class, based on the changing on the value of an external variable, but since I cannot use the "this" keyword to reffer to each instance, I could not figure out a solution.
View 1 RepliesIs it "better" to initialize AS3 class variables in the class constructor? Or can I just initialize them to their default value when I declare them at the top of my class? I ask because when there's a lot of class variables, it appears inefficient to declare them in one place and then initialize them in another when I could easily do both in the same place. It one option is better than the other,
[Code]...
I have a class CoverPoint extends Pointwith some extra function.except for that ther is no difference. I would like to use the functions of Point with a return value of Point, to calculate those CoverPoints.Can i turn the return value into CoverPoint (since all the vars are the same, there shouldn't be a problem with that, right?), so that it can be stored in my var cP:CoverPoint;
View 2 RepliesOnce you load an actionscript page from scratch (in my case loading XML data from a file, initializing various other elements in a fairly time consuming way) if you navigate away from that page and then return to it, (via the browser 'back' key for example) is their a way to forego the previous initialization and just immediately bring up the previous Actionscript page in its fully initialized state.
View 2 RepliesI have created an X*Y grid of rectangles that cover up a movieclip (R). I put these into a 2d array (for easy access) and in a container movieclip which I use as mask over R. Now when I move one of the small rectangles R.width to the right when I am still in the constructor, a small bit of R will become invisible. But when I do this inside the function which handles mouse events, nothing seems to happen.
ActionScript Code:
package documentClass{
import flash.display.MovieClip;
import flash.events.Event;
[code]....
I installed cs5 creative suite on windows 7 64bit, I've got cs4 creative suite installed, all programs work fine, only flash cs5 has a problem, when I try to launch it, it loop after the write "I'm creating the workspace ... " (similar). It loop to infinite, I see the logo and a window with label = "flash cs5", into the window there isn't nothing, only a white page with the "cursor wait".I tried all the advise by adobe (on google cpsid_82252) but nothing work fine ... I re-installed all creative (after WinCS5Cleanupscript) but nothing ...
View 3 RepliesAssume you have a variety of number or int based variables that you want to be initialized to some default value. But using 0 could be problematic because 0 is meaningful and could have side affects. I have been working in Actionscript lately and have a variety of value objects with optional parameters so for most variables I set null but for numbers or ints I can't use null. An example:
package com.website.app.model.vo {
public class MyValueObject {
public function MyValueObject (
_id:String=null,
_amount:Number=0,
[Code] .....
The difficulty is that using 0 in the above code might be problematic if the value is not ever changed from its initial value. It is easy to detect if a variable has a null value. But detecting 0 may not be so easy because 0 might be a legitimate value. I want to set a default value to make the parameter optional but I also want to later detect in my code if the value was changed from its default without hard to debug side affects. I suppose I could use something like -1 for a value. I suppose it depends on the nature of the variable and the data.
As I currently understand, if an event listener is added to an object with useWeakReference set to true, then it is eligible for garbage collection and will be removed if and when the garbage collection does a sweep.
public function myCustomSpriteClass() //constructor {
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener, false, 0, true);
}
In this case, is it not appropriate to initialize an object with weak references event listeners, incase the garbage collector does activate a sweep removing the objects event listeners since they were added during initialization of the object? In this case, would it only be appropriate to create a type of deallocate() method which removes the event listeners before the object is nullified?
I am loading a component which makes a HTTPService call to get data that will then be used to set certain variables in the component. I make the HTTPService call in an init() function (for the initialization event) and then set the variables according to the data received in the HTTPService result handler. However, the variables are still null at both the initialize stage and at the creationComplete stage. If I try and read the variables in a creationComp() function (for the creationComplete event), those variables are still null. Is this correct?
I guess I don't understand the flex initialization cycle very well. When are those variables actually set and available to be used? I need to manipulate those variables automatically after the component loads. Is there an event that comes after creationComplete that is appropriate or some other way to approach this? I am using Flex 3.
I work mainly in C++, and at work we use this awesome autonomous singleton pattern where you automatically add statically instantiated classes to some global list. If you're familiar with c++, imagine something ala:
class CuteSingleton : public ISomeInterface
{
*** stuff ***[code]...
So basically, CuteSingleton is instantiated at DLL load time and added to a global list of ISomeInterface interfaces. This is really powerful because it lets us rapidly prototype tons of code without polluting our existing codebase by having to include these prototype files, instantiating classes like CuteSingleton in a big initializer list somewhere, etc.I've been trying to figure out how to do something similar in actionscript for a few days now and I'm coming up empty handed. All I want to do is have this code instantiate this class without having to reference it in some other files:
package EntitySystem
{
public class EntityManager extends AutoGameSystem [code].............
I'm trying to buid a video player application usin the Youtube API, which is loaded remotely from their servers as described [URL]...reference.html Basically I want to add a playList via XML or flashVars which would be stored in the Model among other data taken from the video feeds of youtube by HTTP request. The issues are:
1.- I don't know where the youtube API would fit in the MVC pattern, because it has two parts, the Loader instance that you can add to the display list and the API Object itself that is more like a controller. My first approach has been to create a controller class which loads it and initiates it. But then I have to provide a reference of the loader to the View. Should I do it using a setter in the view, dispatching an event and then a listener in the view gets this reference from the controller, or including the reference in the model??? I'm a little bit lost here.
2.- On the other side, I don't know how to implement the strategy pattern betwen the view and the controller in this scenario. Should I leave the whole initialization process outside the MVC pattern? It's not that I'm obsesed with design patters, I'm just trying to learn how to use them and put myself this as an exercise: Build a videolist player for youtube so that it's easy to add, let's say Vimeo support later.
Following error is arising if I use NavigatorContent in Repeater. Is there a way to initialize image and lable on which I am encountering following error: Unable to generate initialization codewithin Repeater, due to id or databinding on a component that is not a visual child.
Code:
<mx:Repeater id="rep" dataProvider="{usersArray}">
<s:NavigatorContent width="100%" height="100%" label="{rep.currentItem.name}" >
[code]....
I need to completely initialize a custom component in my Flex app (i.e. I should be able to access it from action script and get its properties and its children etc), But I do not want to add it to the display or make it visible. I have tried to add it to my visible component, but keep it visible, but often many of its properties are set only when it is drawn, so i don't get what i need. Is there a way to add a custom component to some sort of 'Virtual' display, that is not visible to the user?
View 3 RepliesMy Flex application (SWF) initialization takes 25 second to load 1.6mb SWF in widescreen monitor. The same SWF loads pretty fast (3 Sec) in Flat panel monitor 1024x768 resolution. What is the reason for +/- in rendering speed , +/- in CPU utilization on different monitors , screen resolution.
note: my internet sepped is 10+ mbps broadband.
I am trying to write a simple multicore PureMVC helloword. I am getting Error: multitonKey for this Notifier not yet initialized!
[Code]....
I have a Spark list with a customItemRenderer that is taking a good 3 seconds to initialize with just 50 items.
I'm using Flex 4.5, my ItemRenderer is already very optimized, using as little nesting as possible, fxg and so on.
Is anyone having similar issues? I've tried almost everything in the book bar going back to mx.
If I have three classes:
public class Example {
public function Example () {
}[code]............
You can see that the two last classes extend the first one, and both have the 'variable' property. In case that I have an instance of Example and I am sure it is also an ExtendedExample OR AnotherExtendedExample instance, is there some way to access the 'variable' property? Something like
function functionThatReceivesAnExtendedExample (ex:Example):void {
if(some condition that I may need) {
ex.func()
Using Flash CS5 Professional I have created a symbol, dragged it onto the stage, and given it an instance name of GreenLight1. If I want to make this visible from the document class, I can simply do the GreenLight1.visible=true; and poof it's good to go when I test the file. As long as I stay in the document class I am good to go, but now I'm trying to move to another class and hitting ALL kinds of trouble just trying to get Flash to allow me to access this simple object. All I am looking to do is have this GreenLight1 go invisible (visible=false) when a certain condition occurs in this new class and Flash just won't let me access GreenLight1 at all. Things I've tried thus far:
stage is passed to the class and is referenced by _stage and is working just fine when I do _stage.addchild or anything like that. So I have tried "_stage.GreenLight1.visible=false;" and I get "ReferenceError: Error #1069: Property GreenLight1 not found on flash.display.Stage and there is no default value." My document class extends Sprite, so I figured I'd try the root function. So I tried "Sprite(root).GreenLight1.visible=false;" and I get "1119: Access of possibly undefined property GreenLight1 through a reference with static type flash.display:Sprite." I tried to create the Resource class as described therein. To which I came across the same problem that I started with in that it doesn't know what GreenLight1 is to begin with so I got "1120: Access of undefined property GreenLight1." Here is my code for Resource.as (am I supposed to pass something to this class from the document class?)
[Code]...
I have question regarding removing instantiated objects. Let's say i have a main class in which i instantiate a custom video player (or whatever) class:
[Code]...
From my experience, if i don't destroy for example event listeners from my VideoPlayer class and just remove VideoPlayer class the way described they still get fired with null exception messages etc. This is something that's bugging me for a while so i would really like to know what's best thing to do here?
When I use MouseEvent.MOUSE_OUT the target is [object MovieClip], but when I use MouseEvent.ROLL_OUT I get [object Bildspel] - and Bildspel is my class. The thing is that when I use ROLL_OUT I'm not able to delete the targets ENTER_FRAME event.
[Code]...