I'm a very new user to AS3 and I'm attempting to migrate a site from Flash CS3 to CS4 on a Mac. I keep getting the following compile warning: "Warning: Actions on button or movie clip instances are not supported in Action Script 3. All scripts on object instances will be ignored." This is very confusing to me. I thought that scripts could be attached to both frames and objects? Is this a bug that is a result of switching from versions? Or is this warning true; and I have to abandon all uses of attaching scripts to objects on the stage?
Also: Can anyone illuminate me on the keystroke to call the actions window in AS3? It is supposed to be the F9 function key and another that I can;t locate on my keyboard!? As I said,I'm a very new user, so be kind!!
In my library I have:A Sprite named Emily of base-class "Character" with a sub-sprite labeled "head" of auto-generated Class "EmilyHead".A Sprite named Jess of base-class "Character" witha sub-sprite labeled "head" of auto-generated Class "JessHead".
Flash compiles with the following warning: Warning: All instances named 'head' will be automatically declared as JessHead in symbols that use Character as their base class. In symbols that are linked to user-defined base classes, instances with the same name must be of the same type. And then the runtime error:TypeError: Error #1034: Type Coercion failed: cannot convert EmilyHead@3a0d1e81 to JessHead. at flash.display::Sprite/constructChildren() at flash.display::Sprite()at Character() I can turn of auto-declare stage instances in the Actionscript 3 panel, but then I have to manually add a public var for all sub-child's, such as the head sprite. But then at least everything works as expected. This is more setup than I'd prefer to do, but everything else about this workflow is very fast & easy. What can I do to sidestep this error, while keeping the same workflow?
It's coming from this line of code:var dropTargetXML:XML = XMLTemplate.template.component.section.question.(@question_questionID == nNode.parent().@question_questionID)[0];nNode is an XML node sent as an argument to the function this is called in. The code runs,and does everything expected but the compiler sends out that warning. Do I have some formatting issue?P.S. I've tried telling it that it's XML like this:var dropTargetXML:XML = XMLTemplate.template.component.section.question.(@question_questionID == XML(nNode).parent().@question_questionID)[0];
package { import flash.display.MovieClip; public class Foo extends MovieClip { public function Foo() {
[code]....
Suddenly, all the little bar movieclips within foo revert to regular old movieclips and don't fire.[URL]It still has its children, they're added and displayed, but their type changes to MovieClip, ignoring the base class.
I have a holder movieclip, its base class is foo.[code]I put a trace in the constructor of bar so I can tell if it's being loaded properly, and when I drag out foo onto the scene and run the clip, all the little bars within it fire off correctly. However, when I add it to the scene dynamically, such as like this in the Main class:[code]Suddenly, all the little bar movieclips within foo revert to regular old movieclips and don't fire. What's interesting is if you typecast one them as Bar at some point, and their normal class is set to Bar (within the movieclip itself, rather than base class), it works and the constructors all fire, like this:[code]However, if you want multiple different types of Bar clips, and give each a base class of Bar, this won't work. They all spawn as generic movieclips. It DOES work if you go through and typecast them as either Bar1 or Bar2, but that means in practice you would have to try to typecast every child as every top-level object type every time you added the clip to the stage. You also can't have a bunch of movieclips of the same type since Flash doesn't allow it, so each one needs to be a new class, and have that class typecasted when the parent is placed on stage. Kind of defeats the purpose of OOP.
This seems to be a bug in Flash itself, but is there any way to fix it?You can download an example file here with a couple extra traces to show off what's going on: url... It still has its children, they're added and displayed, but their type changes to MovieClip, ignoring the base class.
i have a button with action script code "submit_btn.addEventListener(MouseEvent.CLICK, btnDown);" but it gave me below warning msg...."WARNING: Actions on button or MovieClip instances are not supported in ActionScript 3.0. All scripts on object instances will be ignored." "on press" no longer work in action script 3.0 ?
I have two objects, both brown squares. I want them to be members of the same class but one square to have a number "1" in the center and the other to have a number "2" in the center. Any ideas on how I might accomplish this? Any clues on how to instantiate a vector drawing (drawn in illustrator) from ActionScript 3 as opposed to dragging it on stage from the library in flash?
I have a class, ClassA which is a MovieClip. Inside of that I have about 20 other MovieClips that are associated with ClassB.In my main timeline I have something like this,instantiating ClassA and then calling a setup function in it.
Code: var obA:ClassA = ClassA(attachMovie("ClassA", "classA", getNextHighestDepth())); obA.setup();
I have a class which deals with a lot of visuals, which essentially are movieclips. So I have around 50 privately declared movieclips in the class. Would it be a good idea to put them in a dictionary and retrieve them by their name (as key) , put them in an array or just leave them as they are?
My issue is the visual look of my class right now with that many private members, looks like a mess visually.
So i have a movieclip with a textfield in it. Also there is a class for this Movieclip. This all is exported to a swc that is linked into other projects for reuse purposes. However I cant access the textfield from classes in other projects. I get the 1009 error. Even when accessing ti from the Added to stage event.
I am getting the error: warning: unable to bind to property 'Description' on class 'Object' (class is not an IEventDispatcher)
this is only when the data is bound to a List as an ArrayList, though. I had it in a Datagrid before (just as an Array) and it did not cause any issue. I'm not expecting to be able to bind any data back to the class 'object' not even sure which object exactly it's referring to.
My list data-provider is an ArrayList.. populated by a result event from an SQL query contained in another class:
private function loadDayComplete():void { var Meals:Array = _day.MealResults;
[Code].....
The day class I have is a data holder to get all the data (from several tables) for a 24 hour span.. I have classes for each individual datatype for editing them. But I'm not sure do I even need to worry about the warning if I don't plan on editing the values? it completely spams the console though whenever I touch anything, so I really would like to get rid of it. I tried an object proxy as I saw described elsewhere but nothing changed. The text is in label fields right now anyway, which can't even be edited.
I've been experimenting with Senocular's Transformation Tool, and keep getting this warning at Line 1309 of the Transformation Tool Class version 0.9.11:
Warning: 3553: Function value used where type Boolean was expected. Possibly the parentheses () are missing after this function reference. Line 1309: if (interactionMethod && _transformTool.currentControl == this) {
I just commented out the line and put: if (_transformTool.currentControl == this) { And the swf runs fine.
var sp:Sprite = new Sprite(); sp.x = sp.y = 40; addChild(sp);
[Code].....
I want different actions for different MCs, but I can't access my MCs. I gave them names btn.name = "btn" + i;, but whenever I tried using MCs instance name "btn0" or "btn1" and so on it didn't work. So what is an instance names for my MCs?
I want to know how to make class instances into listeners and broadcasters, from inside each class. Here is what I am trying specifically... part of the Proj class... (projectiles, as a matter of fact)
Code: private function listen():Void { u.register(this); onUpdate = function(){ step(); // a function I have which makes the projectile move (not shown) } }
where "u" is another class, the Updater class with this code...
Code: class Updater { // const. --- make this a broadcaster public function Updater(){
[code]....
PS: What is the syntax for using AS2 code tags instead of just "[CODE|"?
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).
I'm more of a Flex than Flash developer so I'm hopeful this is something easy. Short story, I have a scrollpane in a flash-created swf. In my pure AS3 project I dynamically create menuitems within a new movieclip.
I also have a bit of code to stop the video from playing and then resuming again.import flash.net.NetConnection;import flash.net.NetStream;import lash.events.AsyncErrorEvent;import flash.events.NetStatusEvent;import flash.utils.Timer;
/*1)convert the video into an flv or f4v supported format2) go to library and select new video3)place the video to the stage4)give an instance name of videoHolder*/var myVideo:NetConnection = new NetConnection ();//null because we are going to use the video
I've added a movie clip dynamically using the following code:
var apie=new cPie() apie.x=100 apie.y=100 stage.addChild(apie)
I now have a pie on my stage. Yum. Assuming this works like a movie clip placed on the stage by dragging and dropping, I added this in to change an instance in the pie.
I'm adding a line to a canvas using canvas.moveTo(0, 0); canvas.lineTo(100, 100);, but I then want the user to move the mouse to set the rotation of the line.Google suggests using the rotation property,but I don't have a reference to the line object.Can I get a reference to the line or should I rotate the whole canvas?