ActionScript 3.0 :: Custom Class Inheritance And Property Accessibility
Jul 24, 2010
I'm having trouble accessing the variables of my main class from other class objects UNLESS the objects are extensions of the Sprite or MovieClip class, have been added to the display list as a child of the main class instance, and I am able to use the this.parent.variable syntax. What I'm wondering is, isn't it possible to have a simple Object declared and instantiated, residing in memory and able to access another object's properties, without it being a part of the display list? Am I doing something stupid here?
Let me explain the code a bit in case it's a design flaw on my part. (I'm still learning AS3 and am not completely fluent with it yet).
I have a project with about 15 custom classes. There are no frame scripts in the .fla file. I am using it basically as a library only. The document class (let's call it Calculator for this example) extends the Sprite class and specifies the properties for the SWF dynamically. All other classes are instantiated from this main class. I have a bunch of variables that I want accessible to the different classes, so to keep them in a central location, I have declared them in the Calculator class, and am trying to access them from the other object instances.
(It should be noted that there ARE animations that need to play at times, so I'm assuming I can't NOT extend the MovieClip or Sprite class when creating the document class.
For this example, let's say there's another class called XMLLoader.as, whos instance was created from within the Calculator class, that needs some information stored in the Calculator class' variables. Incredibly simplified code for the two classes might look like this:
Document class:
Code:
package {
import flash.display.*;
public class Calculator extends Sprite {
[Code].....
So, in the code above (I've bolded the most important lines in red), the only way I have been successful at accessing the variables declared in the document class from other classes is to extend the MovieClip or Sprite class when I create the custom class, add the object as a child of the document class (Calculator), create a generic variable cast to the datatype of the document class, and use it to access the variables.
This seems really excessive to me, and I'm wondering if it is, or if this is simply a limitation of ActionScript. Does, for instance, a URLLoader object actually need to be associated with a MovieClip included in the display list in order to access internal variables of the main class object? Is it me, or is that really convoluted? Shouldn't it be able to exist in memory separate of the display list and still have access to varibles declared from the main timeline (i.e. the document class in this case)? Is there no other syntax for accessing these elements? Have I done something limiting with how I've designed this or declared the variables?
View 9 Replies
Similar Posts:
Feb 9, 2010
say that i have a base class called Base, that is Bindable and has a String property like this:
[Bindable]
public class Base
{
public var msg:String;
[Code]......
where msg is some textInput field. I am getting a message from the compiler that....
Data binding will not be able to detect assignments to "msg"
is there a limitation with data binding to a base class?
View 1 Replies
Jan 23, 2010
I am new to AS3, as well as Flash in general, so forgive me if this seems highly elementary. All I am trying to do is create a custom class that extends the MovieClip class and contains a custom property of "marker". I want to be able to use and change the value of this custom property on the timeline for an instance of this class and have it behave just like any other (Ex: this.x ==> this.marker).
[Code].....
View 13 Replies
Jan 25, 2010
I couldn't work it out yet...
package components {
public class templateSelection extends VBox {
static public var tempSelectionBag:Dictionary;
[Code]....
I want to have a custom class tempSelection with a Dictionary as a public accessable property of that class. If I use this code, the compiler tells me:
1046: Typ wurde nicht gefunden oder war keine Kompilierungszeit- onstante:Dictionary
Which translates to:
Type was not found or was not a compile-time constant: Dictionary
View 1 Replies
Dec 28, 2009
Is there a point of creating custom event class if i dont need to pass custom property with that event?
View 3 Replies
May 14, 2010
I would like to know if it is the same to assign properties to my custom component in its own class, or from the parent document. Here I assign the property bottom in my custom component class:
<?xml version="1.0"?>
<mx:LinkButton bottom="20" >
<mx:Script>
Here I assign the property bottom when I use the component in my main MXML file
<myComp:Brick bottom="10"/>
View 2 Replies
Oct 12, 2011
I'm pretty new to fully using class's for my programming (in-frame scripting satisfied me for a while). I am having a problem accessing the properties of a class from another class. The first class (I'll call it controller) receives a reference to an object of another class (I'll call it display). Display have several specialized subclass (I'll call one SequencedDisplay). SequencedDisplay has a timer in it that I need to access:
[Code]...
View 2 Replies
Oct 31, 2008
i try to migrate from as2 to as3 and i have one problem When i attachMovie from library (addChild in as3) and i add custom property its work fine.Here is ex.
Code:
var i:int;
for (i=0; i<5; i++)[code]....
when i attach to that symbol custom class in the library.i got the error: #1056:Cannot create property...
View 6 Replies
Sep 7, 2011
if I can do this in as3: I got two "Class"es and I want to know if A:Class is inherited B:Class without instantiat any of them?
View 5 Replies
Nov 9, 2010
I am working on inheritance for the first time. Here is the super class
SetBlank.as
Code:
import flash.text.*;
class SetBlank {
public var _textFieldName:TextField;
public var _defaultName:String;
public function SetBlank(textFieldName:TextField, defaultName:String) {
[Code] .....
I can see the trace function working but the method which sets the text field to blank is now working.
View 4 Replies
Jan 30, 2009
example:
Code:
class Dot extends Sprite {
public function Dot():void {
ring.scaleX = 1.0;
[Code]...
If I attach the class Dot to the movie clip everything is fine, but if I attach the class Dottle to the movieclip the pre-export complains saying it can't find 'ring'. however, if I use this['ring'] everything works fine. I understand WHY this is, but I don't know what I should do to make it so it works w/out have to put this[''] around everything.
View 4 Replies
Jun 4, 2009
I'm creating an isometric game in AS3, Flash CS4.I created a file named Units.as which contains the following:
Code:
package
{
import flash.display.MovieClip;[code]....
The postoffice and cornershop movieclips have been set to the corresponding class names above.The file is in the same folder as the .fla and can be seen in the project window.When I compile, it doesn't include the Units.as file. Even if it just contains:
Code:
package
{
import flash.display.MovieClip;[code]....
if i create a class from the project window and select the movieclip in the library, it does include that file.So I'm assuming the compiler only includes .as files with filenames corresponding to class names.
View 2 Replies
Jul 12, 2010
I have a class called BgItem that I want many other classes to extend. But I also want to be able to use instances the BgItem class itself. Within the BgItem class file, I want to be able to detect whether the specific instance is of the BgItem class or an extension of it. I know I can detect if a class is in an object's chain of inheritance using the "is" operator, but how do I detect if a class is at the end of the chain?
View 5 Replies
Jan 18, 2009
I am trying to create a custom class of my AS3 XML News Ticker. I am getting the error "1120: Access of undefined property" for references to objects which are already on the stage i.e. not dynamically created. I am pretty sure that it is an encapsulation issue.
View 7 Replies
Oct 6, 2011
I am having trouble using inheritance, I made a class called newchars_2 that extends my class newchars and i get this error (newchars class extends movieclip):
1203: No default constructor found in baseclass newchars.
newchars_2.as:
package {
public class newchars_2 extends newchars {
private var obj_no = 3;
public function newchars_2() {
//contructor class
}}}
And when I want to import this class do I import both the class's or just newchars_2 because it has all the functions inherited?
View 11 Replies
Jun 3, 2009
Lets say I have the following inheritance hierarchy:
Code:
Select allpackage {
public class ClassA {
protected function foo():void {
// do something
}}} package {
public class ClassB extends ClassA {
[Code] .....
Now this is all well and good, as the call to ClassC.foo() will propogate through the inheritance chain; C > B > A. But what if I want ClassC.foo() to call foo() that is in ClassA and bypass the method call in ClassB? I have tried the following:
* Cast the method to the super-class type I want to execute, but this does not work as intended.
Code: Select all...
override protected function foo():void {
// do something related to Class C
// call ClassA.foo
ClassA(this).foo();
}
View 2 Replies
May 5, 2011
I've made it this way1. I made clip and it's main class (eg. timeline.as) - at this point it works2. I put code from main class to another class (eg. timeline_template.as) and in main class (timeline.as) I inherit it by :public dynamic class timeline extends timeline_template {3. I added stage items declarations in timeline_template.as because without that any code couldn't reach target an I got 1120: Access of undefined property xxx after these steps whole clip works but items on stage ( buttons, etc. ) are not affected by code. That's logical because code references to properties declared in timeline_template but not in timeline.fla. But how to get around that - I need several usage of timeline_template and I would like to avoid code redundancy
View 3 Replies
Feb 10, 2005
i've got an inheritance chain of AS2 classes set up where i have an array in the 'child' class that i'd like to be able to access from the 'parent' class:
bottomClass.as -'parent'
topClass.as -'child'
my question/dilemma is: how can the parent access the properties of a child class...is this even possible, or am i just looking at it wrong?
View 2 Replies
Feb 10, 2005
i've got an inheritance chain of AS2 classes set up where i have an array in the 'child' class that i'd like to be able to access from the 'parent' class:
bottomClass.as -'parent'
topClass.as -'child'
my question/dilemma is: how can the parent access the properties of a child class...is this even possible,
View 2 Replies
Aug 25, 2009
i am a bit embarassed to ask this, but i do this so much i have to ask. Occasionally, i need to pass/handle custom events on the fly. Rather than creating a whole custom event class, i will just do something like
Code:
myObject.dispatchEvent(new Event('thisCustomEvent'));
//and then handle it later
[code]....
View 12 Replies
Jun 22, 2011
I have a Custom Component that has a couple of Canvas with some background colors assigned to them. Now i have hard coded the colors, i want to move them to an external css file. So i would like to have the css declaration like this :
[Code]...
My question is if i can define custom style names like dividerRightColor and if so, how can i use that value inside my MXML Component? I have seen examples of using them inside Pure AS components.
View 2 Replies
Aug 4, 2009
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].....
View 3 Replies
Jun 16, 2011
I have a custom class being constructed from my main class. In the custom class it has another custom class that is passed in as a parameter. I would like to strictly type the parameter variable but when I do, 'the type is not a compile type constant etc'.This, I understand, is because the custom class used as a parameter has not yet been constructed.It all works when I use the variable type ( * ) to type the parameter.I suspect this is a design flaw, in that I am using an incorrect design pattern.It is actually hand-me-down code, having received a large project from someone else who is not entirely familiar with oop concepts and design patterns.
I have considered using a dummy constructor for the parametered class in my main class but the passed in class also takes a custom class (itself with a parametered constructor). I am considering using ... (rest) so that the custom classes' parameters are optional.Is there any other way to control the order of construction of classes? Would the rest variables work?edit)in main.as within the constructor or another function
var parameter1:customclass2;
customclass1(parameter1);
in customclass1 constructor:
[code].....
View 1 Replies
Dec 2, 2011
This is my first time working with a class attached to a movieclip that is nested inside a class attached to a movie clip.I've tested all the properties and methods of PTListItem.as and they work properly but when I try to call them on the list item through PTListTop.as it returns undefined.The end goal is to dynamically load a checklist via a txt file.
View 1 Replies
Jan 9, 2011
Lately i discovered MATE (for Flex development) and was wondering: how do i bind a property in a view (actually a navigatorcontent component) to another property in a class so that they stay in synchronization (meaning that whenever the property in the class changes the property in the view also changes).
So if we have a view called Target.mxml and a property targertProp how do we bind it to the class called SourceClass with property SourceProp?
View 3 Replies
Nov 4, 2011
I have the following situation:I have an event handler, that displays small messages in my application's statusbar.These messages get passes through by dispatching events from custom components.A simple message could be like "HTTP Error" or so.Now, the main event listener, in the main application file, listens to the event dispatched by any custom component,but seems to refuse listening to events dispatched by custom AS classes.Here is my code for the custom event:
package main.events
{
import flash.events.Event;[code]..
So to sum it all up:
- The event listener listens to the custom event dispatched by any custom component.
- The event listener does not listen to the custom event duspatched by an AS class.
Those who wonder, the event really gets dispatched, that's why I added a trace call.
View 2 Replies
Jan 29, 2012
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()
View 3 Replies
Nov 24, 2011
I have the following inheritance structure:
var environment:AvEnvironment = new AvEnvironment(...);
addChild(environment);
environment.addChild(new Terrain());
environment.addChild(new Player());
I am trying to access a public property from AvEniroments class through the Player class, however I'm getting an undefined property error (#119). I've tried the following:
this.x = AvEnvironment.xs // public property in this class
this.x = parent.xs
I've also tried something like this:
var ev:AvEnvironment = AvEnvironment(parent);
this.x = ev.xs
but I get a TypeError. Error #1009: Cannot access a property or method of a null object reference.
View 1 Replies
Mar 14, 2012
i am using xmllistcollection for displaying data in list. whenever i run my application data is display in list control, but this warning has displayed in console. How can i remove this warning warning: unable to bind to property 'xmlnode' on class 'XML' (class is not an IEventDispatcher)
View 1 Replies
Jan 9, 2009
I have a class that looks like this:
[Code]....
now when i try to get the id form the Piece class like this it doesn't work, i've been looking at this for the better part of the past hour! what am i doing wrong?
ActionScript Code:
var player1:Player = new Player("eddie");
player1.setPieces();
trace(player1.pieces[0].id);///why is this not working! getting undefined!
// i tried datacasting i get null
trace(Piece(player1.pieces[0].id));
View 6 Replies