ActionScript 3.0 :: Implement 2 Interfaces With Conflicting Methods?
Jun 17, 2009Is it possible to implement 2 interfaces with conflicting methods?
[Code]....
Is it possible to implement 2 interfaces with conflicting methods?
[Code]....
My question deals directly with ActionScript 3, although it could possibly appear in other languages. Consider the global trace function found in AS3. Calling the method requires no imports and is globally available from all classes.
class A {
public function A() {
trace("Hello, A!"); // Hello, A!
}}
Now, what if I create my own class method of the same name? In AS3, if I have a class method trace and then make a call to trace elsewhere in my class, the call is made to the class method over the global function. Essentially, I've blocked my ability to call the global trace method.
class B {
public function B() {
trace("Hello, B!"); // no output
} public function trace(s:String):void {
// do something else.
}}
Now, I know the obvious answer is to say, "don't create a class method called trace." But what if I'm unaware of the existence of the global trace function? Or what if I have a desire to "override" or "block" the global function? Is doing so bad programming? Or is this just another example of how AS3 is a poor object oriented language?
I'm reading up on interfaces and to me I don't see the point in using them? I understand they follow a certain structure but I don't see the use of it in real world usage?
View 2 RepliesFrom what I read, interfaces are basically classes for methods, right? If two classes implements the same interface, then they should both have methods described in the interface.
Now, how is this useful? Let's say I want to call foo()
[Code]...
I am much more familiar with Java's semantics of class and interface than with Actionscript semantics, but I have an example of some code that works in Java and doesn't work in Actionscript. This descrepency is a serious problem in that I am trying to code generate my Actionscript value objects from the Java DTOs and unless the semantics are the same, I am in deep trouble.
Here's the code that works in Java and fails to compile in Actionscript:
[Code]...
I don't understand why class B throws a compile error about an incompatible signature for "makeCopy" when clearly interface B extends interface A...thus there is no violation of type or incompatibility. If this is just an Actionscript limitation, can anyone suggest a way to recode?
NOTE: I already tried changing interface B to this and it threw an error in interface B (which work in Java):public interface Ib extends Ia {function makeCopy():Ib;}
The argument to my method func() must implement the two unrelated interfaces IFoo and IBar. Is there a better way of doing this than declaring another interface only for this purpose that inherits from IFoo and IBar and using that interface as the argument type?
[Code]...
I'll admit that I'm a scripting novice. So I'm having trouble with some onRollOver, nRollOut, and onDragOver in some code of mine. It's an XML driven menu I borrowed from a tutorial. It allows you to drag items into any order. Anyway, I've tried to implement a movieClip that is visible when you RollOver as well as a seperate movieClip that is visible onPress and onDrag. The code may be too ambiguous but maybe not. I'm at my wits end. Starting to thrash code around. What I'm aiming for is movieClip that appears when you rollOver and goes away when you rollOut. And a movieClip that stays visible when you hold and drag the item around.
[Code]...
I've came across this compilation error a while ago.. As there's an easy fix and I didn't find anything relevant at the time, I eventually let it go.I just remembered it and I'm now wondering if this is really part of the language grammar (which I highly doubt) or if it's a compiler bug. I'm being purely curious about this -- it doesn't really affect development, but it would be nice to see if any of you have seen this already.
package view {
import flash.display.Sprite;
public class Main extends Sprite {
[code].....
I am using Flash Builder 4 and need a VideoDisplay component that works with Cue Points. The newer version of theOSMF classes that Flex's VideoDisplay are based on handles this already. The idea is to roll my own VideoDisplay component rather than monkey patch the existing one. To do this, I have created a project with the newer version of the OSMF classes, and another project with which I would build the new VideoDisplay, in a separate package name.
The issue is that since the Flex 4.1 SDK contains the majority of the OSMF classes with their original package names, a statement such as import org.osmf.media.MediaPlayer; references the class located at
[Code]...
The problem is that when I try to click on a button it gives me this error:TypeError: Error #1009: Cannot access a property or method of a null object reference.at dyson_fla::MainTimeline/progressHandler()(progressHandler is the function that calculates bytes loaded and does all the math for the preloader; this is part of the external .swf that are loaded onto the main timeline)Here's the code for the main .swf and after I'm adding the code for one of the external .swf that I'm trying to load.
import flash.display.*;
import gs.TweenLite;
import gs.easing.*
[code].....
How to use interfaces?
View 2 RepliesOur company is about to create and distribute (and possibly to sell ) the utility to convert Silverlight apps to its equivalents on Flash.For this purpose we're writing our own AS3-compiler. The compiler for correct work must know how to interact with the classes
backed into the FlashPlayer. The Flex Builder solves it by using the playerglobal.swc that is the part of its distribution package.As far as I know we have no right to redistribute the separate playerglobal.swc without the rest of Flex SDK.
And here is the question: Tehnically we're able to learn all the class interfaces defined inside of the playerglobal.swc with the help of e.g. the plugin ExportSWC (shipped for FlashDevelop) and redeclare them inside of our own swc (e.g. named PlayerGlobalInterfaces. swc) or somehow else.It would be enough for the correct work of our AS3-compiler without the need of using playerglobal.swc at all. But I'm not sure would it violate any copyrights or not?
Is there any way to create a sort of interface for variables? In other words to enforce a class to create and use a variable if they implement an interface or subclass something?
View 1 RepliesWhat I was told, which sparked my curiosity on this topic:Java gui classes can implement hundreds of Listeners and Callbacks and many books teach you to implement all these interfaces in your gui class. Alternatively, these aspects can be implemented in inner classes, so methods called by that listeners do not get mixed up.'d like to know how to do this in ActionScript, which doesn't have inner classes, but has private classes. But, I don't think I fully realize what inner classes are about, so I'm merely trying to wrap my head around the situation where I would use them to organize a class' methods by their usages.
View 2 RepliesDoes anybody know a way to apply an Interface to ObjectProxy, so that you don't have to declare the Interface implementations within the proxy?In other words, if the purpose of ObjectProxy is to proxy the Object in question (passing requests for properties and methods silently to the embedded Object), is it possible to tell the interface "hey, the functions you are looking for are already proxied, so don't bug me about them!"[code]But the function declarations kinda defeat the purpose of using ObjectProxy to begin with... I'd like the Interface to just "know" that "nemesis" is managed by the proxy, but still use the Interface for displaying context-help.which is how to code the context help so people using my MeatwadProxy will see context-help for the Meatwad class it contains?(And yes, I can already hear DrkStr and ASWC snickering at me in the background for continuing to believe in ActionScripts Proxy class. I also believe in Santa Claus, so there!)
View 2 RepliesIt seems that Actionscript doesnt support defining static functions in interfaces. Whats the reasoning behind this?I think it would be useful to have that ability but I'm sure there must be a reason why its not there.
View 8 RepliesShould each button get a class and a listener, or should I dump everything into one Object and use e.target.name to figure out what is getting clicked? That way I can just use one listener, but then I won't be able to recycle anything. I could probably work around that though.
View 1 RepliesI am trying to get a handle on interfaces with AS3 and am kind of at a sticking point. Someone tried to explain them to me using legos and conceptually I get the idea of consistent interaction. Where I seem to get stuck is, I don't really see how the implementation of interfaces accomplishes this.
[Code]....
What's the best way around this problem with interfaces?
public interface ITest {
function set testField(test:String):void;
}[code]......
Test does have a setter for testField (an implicit one).I don't want to define an explicit one for every single field I have defined in my interface.There doesn't seem to be a way to define getters/setters in interfaces (or the syntax just escapes me).Do I have to do this explicit getter/setter nonsense in order to use interfaces in this way?
Is there any way of being able to use the standard iOS interfaces in Flash CS5? i.e blue title, grey striped background, popup keyboard, standard alert message? etc p.s where would one find example code and tutorials for writing the iphone apps as there seems to be nothing available.
View 1 RepliesIve looked this up in a few different locations, but to be honest, i dont really get it. I get what loose coupling is, but not how interfaces in Flex?
View 1 RepliesIs there any way to get interface to play along with custom namespace? Example follows.
IHeaderRenderer.as:
public interface IHeaderRenderer{
function set header(value:IHeader):void;
function get header():IHeader;
}
[Code]...
Sorry for all the blabbing. Any cunning ideas how this kind of situation could be handled?
I'm making a game which loads map .swfs at runtime. The maps will contain graphics and code, which can both vary from map to map. I've decided to make all the maps implement an interface, so they can all be used in the same way by the game. I'm using a .swc to contain the interface, like in this page.
I can get classes to work in the .swc, but not interfaces!
I'm using Flash cs5, and flashdevelop for editing, in AS3. Here's how I've been doing it:
1- create map.fla with a symbol called Map, and a Map.as:
[Code]...
The following code seems to create an ambiguity for the compiler (please see error commented near the bottom). Is it not possible to have getters and setters split between interfaces?
[Code]...
I have two interfaces that declare functions with the same name but incompatible signatures:
interface IDog
{
function bark() : void;
}
[code]....
1) Missing 'public' qualifiers in the class definition were a typo. I fixed it.
2) I missed an additional requirement that interfaces CAN'T be modified (for the purpose of this question). In the real project they're defined in two different libraries that are a part of a large project. Multiple classes implement both interfaces (separately). So, any changes of interfaces will require cascading updates of all those classes, recompilation, testing, etc. So, I wanted first to find out if there was a solution without such intrusive modifications. It doesn't seem there is.
Let us assume I have classes "Main", "Sub1" and "Sub2". I also have interface "Inter".[code] Basically, I want the constructor function of any class implementing "Inter" to take the same parameters, and thus avoid initialization errors. (So as that the code above gives a compiler error) With any other function,[code]But As the constructor name differs from function to function, I cannot do this.
View 4 RepliesI'm trying to learn to program to interfaces. I'm using "Advanced AS3 with Design Patterns" (Lott and Patterson) as my guide. Doesn't look so tough at first, but I'm really stretchin' to get a grip on it.
Even though there are no parameters required for "ILoadable" or "ImageGallery", I'm getting the error "1136: Incorrect number of arguments. Expected 1." on
[Code]...
I would like people to be able to change this custom scrollItem class, but as the scroller class has some interaction with this scrollItem class (sets id etc), I have the scrollItem class implement an interface to guarantee the presence of the required methods.This works fine, but only if I keep the type of the scrollingItem class within the scroller class. I would prefer to substitute in the interface type for each scrolling item. However, I cant, as the interface is not a DisplayObject. I can get around this by casting the interface type as a DisplayObject whenever it needs to do DisplayObject type things, but this seems like a hideous hack.
View 5 RepliesI know it is impossible to extend two classes in the same .as file, but, after some extensive googling, I see that it is possible to implement more than one interface in the same package.
View 3 RepliesI have a question I wanted to ask you guys, it's pretty complex because it involved classes and interfaces and can get confusing. I'll try my best to explain it below. The gist of the story is, when I click the duck, I want it to give birth and also increment the number of ducks in my farm. Here goes:
[Code]...