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?
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?
I have a base class which is being created via remote_object [RemoteClass alias] from the server.I have other specialized classes that are derived from this baseclass, but serialization with the server always happens with the base class.The base class has meta data that defines what the derived class is, for example
[RemoteClass (alias="com.myco...')] public Class Base {
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:
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)
I'm slightly new to Flash CS3 + AS3 combo, so its more of a lack of practice question. My question stems from the problem described here http:[url].... . Note, its not the same problem, its a new one.The Problem ,So I have multiple library assets (which are on teh stage) and I want to assign similar functionality to all of them.
Attempt 1: So I create the n assets, create a custom class in AS3, link them to Flash CS3 and obviously enough it gives me the error that multiple assets can't be linked to the same class.Obvious enough to understand (well not completely, because from a programmers background it doesn't make sense).
Attempt 2: Same as attempt 1, but instead of linking all the assets to the same class I make the base class the same class, and let the derived class be dynamically created by Flash on compile time.So the linking works, but the problem is, in my base class I have a method which does something (say an tween) on a child of the library asset. So if the assets on the stage/library are called asset1, asset2, asset3 (same name for asset name, class name, id name), each of them has a sub-movieclip called ... say 'foo'. now if I manually wrote a class for each asset, I could do 'this.foo' to play with the sub-movieclip. However since this functionality is in the parent class, I'm unable to do it.
P.S. If you're form a programming/OOP background, its basically a abstract class problem. My Base class knows how to doSomething(), but it needs aSomething, which is defined in the Derived classes. However I found out that AS3 classes don't support virtual(C++ )/abstract (Java) in the true sense of the word (unless I missed some obvious documentation).
Let's say Class A has the flash.events.Event imported. Now let's say Class B extends Class A. Why in the hell do i need to import flash.events.Event in Class B? It makes no sens at all to me.
I'm trying to create a new instance of a MovieClip when the original one has been used. Would sound easy enough. Just use: var
instanceName:ClassName = new ClassName();
the class name/mc in the library im trying to duplicate is MCg1 so
var instanceName:MCg1 = new MCg1(); right?
However, the particular object in the library i'm trying to duplicate has a base class that is an external class file (just to control it's drag drop functionality)... i.e baseclass is not set to the standard flash.display.MovieClip, or whatever the case maybe. So i end out with a: TypeError: Error #1009: Cannot access a property or method of a null object reference.
I have this Fla which contains a symbol that is linkaged to a certain class that is in my project. That class inherites a base class named CMovieClip which resides in one of the libraries that is in the class path (and inherites from MovieClip).Of some reason, every change that I do in the base class doesn't seem to influence the resulting linkaged class, much as if this library is cached somewhere that I can't feagure out.I tried to create the same conditions in a separate Fla but it does not repeat the issue.I tried to duplicate the symbol but the issue isn't solved that way.
I created a movieclip with a star. Then, I creates a document class and I named it as Main.as.
In that document class I wrote: package { import flash.display.*; public class Main extends MovieClip
[Code]....
I´m not posting here all the code, but you can easily see that I´m using x_origin and y_origin variables to keep the original position of the movie clip. I will use them to move the star back to the original position.
The problem is that instead of being 20 and 30 respectively, tracing them I see that they are both ZERO. So when I drop the star, instead of going to x=20,y=30 it moves back to x=0 and y=0. I´ve to get the star position relative to stage, but I can´t find anyway!
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?
I have several components where I want to enable buttons based on passing a username to a function. I want to dynamically bind the "enabled" property on a button so that if the "somethingChanged" event fires, a button may become enabled or disabled. But, I'm not sure where to fire the "somethingChanged" event. It's possible that I may need to fire the "somethingChanged" event from several places in the application. Is this possible with a bound static function?
EventManager.as public class EventManager():void { [Bindable(event="somethingChanged")] public static function hasAccess(myVal:String):Boolean { }} [Code] .....
I have an mc called sunny. In the properties panel I export her for actionscript. I put Sunny in the main class and Drag in the base class. The reason for this is that I want her to be draggable. I can't use Drag in the main class as another object is using that name. The Drag.as has the drag functionality. Why can't I drag her. I already have a solution - I wrote a specific class for her and extended the Drag class. However, if I have 10 mcs I'm not going to write specific classes for all of them. Summing up: Using the base class Drag in properties panel - why isn't she draggable?
I have two SWF files which I shall call container and slave. The slave file contains a movieclip that extends from a class I shall call base. base extends MovieClip and is compiled into an SWC. slave includes this SWC as a runtime library, while container includes it as merged (and does reference it so it should be compiled into the container SWF).
The container loads the slave like so:
bgURLRequest = new URLRequest(slaveUrl); var context:LoaderContext = new LoaderContext(false, new ApplicationDomain( null ), SecurityDomain.currentDomain); bgLoader.load(bgURLRequest, context);
When this loading happens, I get the error that class base was not found. I suspect this has something to do with the presence of the ApplicationDomain in there. I'm not sure what it does exactly, since I didn't write this loading code myself (but I do know that it's there for a reason so it can't be simply removed).
In my flex app I have various custom components done with mxml or actionscript.I want all of them to extend a base-class where I can define properties/event listeners etc.Can someone give me an example how to create that base class and how I can extend it in mxml and actionscript components?
I have a BaseComponentClass that I am using as the class that all my custom components extend.For some reason, none of my custom components show up at runtime. I am not getting any compile or runtime errors either.I am implementing all the protected UIComponent methods.[code]The Button never shows up at runtime.
I have a program where I have multiple classes derived from a base class. I want to take all instances of the different subclasses and put them into an array. Is there a way I can search for anything derived from the base class?For example, right now a get the number of children, then see what they are, so:
for (var i = 0; i < this.getNumChildren(); i++) { if (i is "type")
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):
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.
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.
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:
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.
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?
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?
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()
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.
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));
I was wondering how do you access the stage property from a different class that's not the principal class tied to the fla? Essentially, I have main.as which calls another class menu.as, and I can't seem to be able to use the stage.stageWidth property from menu.as. What's the proper way to be able to use the stage property from any class? Do I have to import it separately each time?
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(); }