ActionScript 3.0 :: Document Class Vs Timeline Code Differences
Nov 21, 2010
I'm trying to hunt down some kind of class conflict I seem to be having when using TweeLite easing and found out the same code that errors in a document class works fine if I place it in the timeline. Example - this works in frame one of the timeline:
I had some code directly in the timeline that accessed/modified properties of some movie clips. I then did the proper thing and moved the code to a Document class. I put the code that was formerly in the timeline into the document class constructor.
The issue I'm having is that if I access the movie clip properties "too soon" it reports that they are null. If I put the code in a timer event callback for half a second or so, or put an addFrameScript call with a frame of around 8 or higher, the movie clip references are valid and it all works.
So for some reason by the time the code in the timeline gets called all of the movie clip instances are valid. However, when inside of a document class constructor, they are not. I've tried using the ENTER_FRAME event callback but the movieclips still aren't ready.
The code is supposed to change some movie clip properties based on some loaderinfo parameters, so I do kind of need to set those properties before anything starts animating.
I've written a game in Flash using timeline code like this:On the main timeline:
Code:
stop(); include "includes/mySourceCode.as"; init();
Then,in mySourceCode.as I have a set of functions (including init(), of course).I know this technique of coding is frowned upon by many,but it was what I learned when I started out with Flash and it has always worked well for me. It also means I don't usually have to bother with importing classes to make most methods work as I guess they are all 'built in' to the main timeline already.
The problem I have now is that I have got the game sponsored, and the sponsor needs me to include his preloader, which is a document classfile.So I have his preloader working, and once loaded it tells the main timeline to proceed to the next frame, where I have my usual code as above - which now doesn't work.Firstly, it can't find my include files because it is now looking in the document class folder instead of the main .fla folder it usually looks in.Secondly, once I have moved my include files to the same folder as the document class, it gives me around 70 errors about undefined properties and methods, and things not being'compile time constants' whatever that means.
I am guessing that for some reason, since there is now a document class, Flash is no longer importing all the classes it usually does automatically for me - so could it be that I need to go through my whole game and figure out the class import paths for all the methods I have used? Or is there an easier way to get my code working how it was before without having to change it? If I do impoort all the right classes, should it work then or will I still face problems?
I am trying to find out why when I place trace(parent); in the timeline of my child swf I get [object Loader]but if i place trace(parent); in the constructor of the child swf's document lcass I get null.Why is this and how would I access the parent swf from the child document class if it shows as null?
coder dudes I need help on some actionscript 3. Im trying to move a piece of code from the timeline into the document class. Here is the timeline code:
import Memory.MemoryGame; // Add memory game var memoryGame:MemoryGame = new MemoryGame(this, "settings.xml");
Here is my attempt at moving it into the Document class:
Is there a way to link to a class file from the timeline rather than using the Document Class? (I tried using the document class but it messed up because of the nested movie clips and stuff like that... so I need another way)
When I set the following class as my document class it works (draws a rectangle) but when I don't set it as my document class and instead instantiate it using var myRec:simple_shape = new simple_shape(); in first frame of my timeline nothing happens no rectangle and no error either). why and how I can get it to work without setting it as my document class?
I've been working on flash CS3 for some time now and have learnt a lot in actionscript 3. However, I still have some very simple doubts which I want to clear:
1) Is the Document Class same as the Main Timeline? 2) If we type "trace(this)" in the actions panel on the main Timeline, it gives "object MainTimeline", is this what is the document class because there is nothing else as the mainTimeline Class. 3) If we type "stop()" in the main timeline, it stops the movie. Where does stop() belong, I mean, it is the method of which class? 4) Sometimes, when within a class or a movie clip, something like "root.gotoAndPlay" doesn't work while "MovieClip(root).gotoAndPlay()" works. Another example is when we try accessing a child of a movieClip by using getChildAt(i), "MC1.getchildAt(i).play()" does not work and we have to write "MovieClip(MC1.getchildAt(i)).play();
the first code (which I put into a frame) is somehow in conflict with my document class.I get these error messages:
1046: Type was not found or was not a compile-time constant: URLRequest 1180: Call to a possible undefined method URLRequest. 1180: Call to a possibly undefined method navigateToURL
But when I only use that code and unlink the document class it works. So there must be somehow a conflict between the two, but I have no idea how to integrate this code into my document class -I already tried it but the error messages keep coming, probably I didn't do it right.
code in frame:
Actionscript Code: btn_contact.addEventListener(MouseEvent.CLICK, contactClickHandler);function contactClickHandler(event:MouseEvent):void { var url:URLRequest = new URLRequest("../Subpages/SubpageContact.html"); navigateToURL(url, "_top");}
This is the file before the move [URL]... when you click the contact us button it should dissolve now I get:
ArgumentError: Error #2005: Parameter 0 is of the incorrect type. Should be type IBitmapDrawable. at flash.display::BitmapData/draw()at WebSite/$construct/gotoContact()[C:AS3projectsfullBrowserscaleVid WebSite.as:65]
here's the code: the offending code is in bold everything but the pixel dissolve works as before com is the instance of flvPlayback component that's on stage at author time there is nothing else on stage at author time and no action script in the flv
This will probably seem a moronic question, but I've only been using Actionscript for about a week... Either way, I've written a very long and complicated (8500 lines w/ autoformat) code for a game I've decided to program. The game is functional, the AI can respond to outside inputs etc, and I know reasonably well how to use SharedObjects.
What I'd now like to do is make a menu system surrounding my game that can pass variables in and out of this existing program. The program is currently in the shapely form of a Document Class, meaning the code runs on load. I'd prefer if there was a way to simple make the code run upon being called. How would I best do this? The only inputs presently used are keyboard inputs...
have a very simple question, (Bear with me I'm still quite new to as3 and some of my terminology may not be solid) I want to access a function that is within my document class when a movie clip on the timeline has played to a specific point (being the end). I have already been able to call another function from the document class at the top/root level (it is called to initialize all clips and buttons when you click on the "enter" button on the splash screen. Problem is that I cannot call another function (in the document class) from a movie clip within a movie clip on the timeline. Is there an easy way to do this? I have considered writing a separate class for the movie clip and then adding it onto the movie clip (using the property panel). I don't really want to do it this way because I am already using a base class on that movie clip and 3 others that use a set of generic functions.
I have built a button in the fla timeline and need to have it fire a method in a document called gigyaSocial. the Timeline code works fine but I cant get it to recognise the method that I commented out at the bottom if this code snipit.
I have a document class called PlayVoiceOvers; I set voiceToPlay and frameToPlay in the public function and when the voice "v001.mp3" is done playing it jumps to frame label v2.[code]...
However the new voiceToPlay and frameToPlay don't do anything even though when the soundCompleteHandler is done it traces the correct values.can I pass variable information from the main timeline to the document class, apparently I can but I don't know why the new voice over doesn't play.
I'm learning how to work with a document class. Using the class below, I am learning that this initiates immediately when running the Fla. The problem is that the "scrol" Movieclip is not present in the first frame, which is a menu with a list of topics. Scrol comes later in and is in it's own section/frame label and goes to that section when selected from the main menu of topics.
Is there a way I could call this action only when the Movieclip is present or when that section is shown? Also, I'd like to apply it to other movieclips, not just scrol. Underneath se = new SwipeEngine(scrol,400,0); can I just add a duplicate line but change the mc name? A possible concern is that the mcs may be different sizes in length and might not need to scroll as far.
I have a function defined in my document class that I want to call on a framescript of a movieclip placed on a timeline. Of course, left to itself it's "undefined", and I can't figure out how to reference parent/root/document class.
So I have a MovieClip symbol created in the Flash IDE with a baseClass of flash.display.MovieClip and Class name of "Square". I have placed it on the timeline of my fla at frame 30 and given it an instance name of "square". How can I control that MovieClip from my DocumentClass? I have an ENTER_FRAME listener listening for the arrival of frame 30. At that time I want to simply do something to the "square" MovieClip. But I keep getting a compile-time error of "1119: Access of possibly undefined property square through a reference with static type flash.displayisplayObject.".
Is there a way to get an instance reference to the document class to call a method of it from the stage's timeline?I see that here's a possible solution: using a singletonOther solution I though of is using stage.getChildAt( 0 ) but it's not very nice.Is there an 'official' instance reference? because the document class is obviously instantiated at startup, but is that instance accessible in any way without having to use a custom solution like the ones mentioned?
I have a question, I wrote the following test as a class: package { import flash.display.MovieClip; import flash.display.FrameLabel; public class FrameLabels extends MovieClip { public function FrameLabels () { [Code] .....
This works great in a document class, however, when I put it on frame 1 of my timeline, it crashes Flash. I have a stop action on the last frame so the playhead shouldn't be running the script over and over, is there any reason that this is crashing?
Timeline code: var labelsList:Array = currentLabels; for (var i:int = 0; i < currentLabels.length; i++) { if (currentLabels[i].name == "monday") { addFrameScript (currentLabels[i].frame-1, mondayHandler [Code] .....
I have 3 functions in my main document class that I want to execute when the main timeline reaches a particular frame number. how do I do that? see the code and comments
I have a MovieClip in my library called WindowHider. The timeline for WindowHider contains a frame-by-frame animation that is made up of individual PNG images that I imported. Each of the 10 or so PNG images sits on it's own frame within WindowHider.I can successfully create an instance of WindowHider within my Document class and add it to the display list.
Question: Is it possible to access the smoothing property of the PNG images within WindowHider's timeline, from the Document class? The WindowHider class is animated and rotates, thus the pixels show and the image is jagged. I know if I could access the smoothing property it would solve the issue.
I have a little problem in my game. I have a var coins:int = 0; on frame one, and I want to access it from frame 2. I'm not using a document class. Is it possible to make some kind of a global variable like in as2 without having to put all my code from the main timelime to a document class?
I have no trouble invoking a Class using the code on the main timeline shown below; var testClass:MyClass = new MyClass(); //code on maintimeline invoke Class. However, if I were to remove this code and just use the Flash Class Input Field and insert; MyClass //the name of the Class. I get throwback errors:
1 - Call to possible addFrame Script?
2 - MyClass must subclass flash.display.MovieClip etc
I've tried variations of adding and removing the flsh.display.MovieClip Class