Actionscript 3 :: Flash Failing With A RSL Library, When Main Class Extends A Class And Implements An Interface?
Mar 13, 2011
I'm trying to load a RSL library into a flash animation developed with Flash CS5 IDE, that extends a custom class and implements an interface. I have reduced the problem to the simplest setup and find that I can have my main class extend another class or implement an interface, but not do both at the same time if I want to load an RSL.I have a very simple class to extend:
import flash.display.Sprite;
public class MySprite extends Sprite
{[ code]...........
but if I want both I get the VerifyError: Error #1014 with MySprite not found and ReferenceError: Error #1065.
Is there a way to generate an instance of a class that implements an interface based on the name of the class?
I am trying:
var ClassReference:Object = getDefinitionByName("movement.OuterSpaceMovement") as IMovement; var m:IMovement = new ClassReference as IMovement; trace("startup..." + m);
-But I am getting an error message ReferenceError: Error #1065 (OuterSpaceMovement) not defined.
I have several classes that implement the same interface (IMovement) but I need to be able to generate new instances of these classes and then pass these instances as a datatype (IMovement datatype) to other classes...
So then I tried:
var ClassReference:Class = getDefinitionByName("OuterSpaceMovement") as Class; var m:IMovement = new ClassReference() as IMovement; and this doesn't seem to work...but the following var m:IMovement = new OuterSpaceMovement();
function someFunction(classParam:Class):Boolean { // how to know if classParam implements some interface? } i.e. Comparing classParam with IEventDispatcher interface
[Code]...
There is a way that DOES NOT USE describeType or creates a new operator?
Not sure if this is possible but I would like to reflect a swf or swc file selected by the user at runtime to find any classes that implement a certain interface. Can this be done or do you actually need a reference to the class you want to reflect using describeType();
In ActionScript 3.0, there are a few ways to check a class's extension. For example, if I want to know of a custom class extends Sprite I could use the is operator: trace(MyClass is Sprite); Or I could use flash.utils.getQualifiedSuperclassName: trace(getQualifiedSuperclassName(MyClass));
I would like to accept a class as an argument and check to see if the passed class implements an certain interface. Is there an equally simple or common way to check if my custom class adheres to an interface? Perhaps something like: trace(MyClass implements IMyInterface);
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 came across this problem and i have no clue why it's happening. basically, consider 2 nested movieclips on the stage, something like stage -> main -> filler. both movieclips have instance names (main and filler).
[Code].....
this throws an error 1119: Access of possibly undefined property filler through a reference with static type A. can anyone give me a hint on that, as it works with class A, but not B extending A? i understand it was meant to work?
I'm having an issue using a class I've created as the base class for library symbols: I've created a class AvSkin which will act as the display for an instance of AvChild. It looks like this:
recently, I research for the collection framework, and find LinkedSet(AS3Commons collection framework,it is a good opensource framework) written in ActionScript, but it can't use as dataProvider in ComboBox or DataGrid, because only implements ICollectionView can use as dataProvider. So I want to try if a class implements ICollectionView can work or not. I know Flex has build-in class implements ICollectionView, but I only want to define a class not use build-in class. The class as simple as possible.(can work is enough)
In AS3, I'm trying to check whether an object is an instance of, or extends a particular class. Using something like if (object is ClassName) works fine if the object is an instance of ClassName but not if it's an instance of a class that extends ClassName.
Pseudo-code example:
class Foo {} class Bar extends Foo {} var object = new Bar();
If I have a Document class that extends MovieClip, and I want to use it as the basis for another Document class, is it possible to create a subclass that extends the main document class and use that for a different FLA?
For example,
fla1.fla has a document class of MyMainClass: public class MyMainClass extends MovieClip fla2.fla has a document class of MySubClass: public class MySubClass extends MyMainClass
I've tried, but now I'm getting errors that all of my variables that reference stage instances aren't being found.
I'm not really asking how. What I'm asking is, is it possible? And I ask because I thought it was not - certainly it didn't work in AS2 - and yet that's what I appear to have done. Am I going crazy? Structure: A SWF (#1) with a class NewActivity that extends class AActivity. Another SWF (#2) with a shared library of code in it, including AActivity. A third SWF (#3) which loads the library followed by SWF#1. Here's what happened: I didn't expect AActivity to be able to be shared. I mean, it should be compiled no matter what in SWF#1, as SWF#1 includes a class that extends AActivity. I had added some properties to the AActivity class, ran the project, and when SWF#3 tried to set those properties I was told they couldn't be applied. "Of course", I said, "I need to recompile SWF#1, because the code is now out of date. The version of the class there doesn't include these new properties.".
However, that didn't work. I got the same problem. Maybe, I thought, there's a definition conflict between SWF#1 and the library, so I removed the AActivity class from the shared library in SWF#2 for the time being. Only SWF#1 uses it, and it should already be compiled into SWF#1 as, like I said, it is extended by another class there. But when I ran the project, I was then told that the AActivity class could not be found at all! Looking at SWF#1 in a decompiler, there is in fact no mention of AActivity (I had up to this point assumed it was implied). So this left just one option: I needed to recompile the library in the first place, not SWF#1. I added AActivity back to the library, recompiled, and it worked.
To check I wasn't going crazy: I added a test property to the AActivity class and recompiled the library. The containing project - SWF#3 - then set this property on SWF#1, which had NOT been recompiled, and then read it back out. No errors. I should point out that the getting/setting of this property is done through an IActivity interface - AActivity is not being accidentally compiled into the main project (SWF#3), and the decompiler indicates this also. Am I going nuts? I really didn't think having a runtime shared super class was possible in any way. If it is, that opens up a whole new world of awesome, even though I've created this project on the basis of that being impossible.
I want to create a complete (and real) 2-dimensional array. In order to use a maximum of Adobe code, I want to use ListCollectionView which can manage sort and filters. But to use a second dimension, I need to override getProperty method, like following code.
I have a Main class that I call from the .fla file. Everything work fine until I set a object in the Library "export for actionscript"... after that the stage didn't work anymore, the stage now return "null", just because I checked an object to "export for actionscript". I'm using flash cs5 and it never happen to me with the early version of flash.
i am working on a project where i have some common code which i import in different movie clips and different files the code is in actionscript 2 in an external .as file. this is not a class its just a bucnh of functions and temporary variables.Problem is when i use the check syntax button or auto format button i get the following error."ActionScript 2.0 class scripts may only define class or interface constructs."this used to work fine in flash 8 but it always gives this error since i started using flash 9.the code works fine too. its just that my auto format button and the check syntax doesn't work.
Got to the point where the hole in my AS3 knowledge is getting large!Realising I have confusion about the relationship of:Body of code on first frame of AS3 file.(Which I have so far used to create instances of library objects using addchild and make calls to class code).Is this code called the document code? What do people call it?Numerous classes linked together by extending each other etc.Library objects (usually graphical objects)Should it be done differently? have the following problems due to lack of understanding:Addchild complicated from a class but straight forward in main body code.Cant call functions on the main body code from classes, because class code does not know the main body code exists?
I have a document class called Main.as In the class constructor I have the following listener:
enter code here var listeningFORModeChangeToStudent:Sprite = new Sprite; listeningFORModeChangeToStudent.addEventListener(TellAllModeChangeToStudent.STUDENT,exp); addChild(listeningFORModeChangeToStudent);
[code]....
In a third class I make a call to the despatcher in the previous class:
enter code here var ThisTellAllModeChangeToStudent:TellAllModeChangeToStudent = new TellAllModeChangeToStudent; ThisTellAllModeChangeToStudent.tellAllModeChangeToStudent();
I have trace statements in eveything and from this I know the despatcher in TellAllModeChangeToStudent is being called.The problem is that the listener in the main.as is not calling the function exp.I cant see why and I dont know how to check if the listener is actually seeing the dispatch event?
I'm new to Flash AS3. I started making a game and I am a bit confused. Let's assume that I want to create a game that has multiple levels/modes, how can I do this in an object orientated way?
When i create games in other languages e.g. XNA C#, i create a separate class then create an object of that class within the main class and run the game based on a simple statement.
I created a movieclip symbol and exported to actionscript, I created the .as file:
class BRIQUE extends MovieClip { function BRIQUE() {
[Code].....
"graphics" is an image imported on the stage inside my symbol, but it seems not to be accessible this way (I get an error), nevertheless it works this way in as3 then what is the right way in as2 ?
I am overriding the addItem() function of an array collection and I would like to detect if the added item implements a particular interface. Previously I used the, is operator to detect the class type, but now that I am using an interface for classes I would rather test to see if the object implements the interface. I expect I could just try and cast the object as the interface and see if it's not null. Is this the best way to do it? I could also just create a new addFunction() that only accepts objects of the interface type.
I have an ancient project that has thousands of lines of AS2 code spread out in class files. I started to try to make an on-screen keyboard and I noticed an issue with FP8 and the Selection class. I need to use FP8 because it's a MDM Zinc extended project and Zinc does not allow me to export to FP9 or FP10 if I use AS2.0. Of course this issue doesn't happen in FP9 or FP10.I have a reproducible example here that's highly simplified and stripped down. It has 3 class files, a Main, ExampleKeyboard and ExampleOutput. Main just instantiates the other 2 classes. The keyboard is all of 3 buttons (again very simplified to stick to the point). The output just generates an input TextField. This issue seems to be isolated to using the Selection class when your project has other classes. For mine, the keyboard is in one class and the TextField is drawn in another. I did a single frame no-class example and this problem does not exist so it's specific to the Selection methods using FP8 when a project contains classes. URL...After you run it you MUST press the red button to Selection.setFocus() the input field. The other 2 gray buttons simply send the letters 'a' and 'b' to the input text field. In FP9 and FP10 this all works just fine. The Selection. getCaratIndex() reports the cursors proper position (which I set every time you press a button). In FP8 you will see that Selection.getCaratIndex() ALWAYS returns -1. Has anyone had these Selection class issues in a project that used multiple classes and FP8?