Flash :: Package-level Function Is Not Working?
Aug 19, 2010After I saw the methods in flash.utils package, I decided to make a try:
// inside file Test.as
package com.tests
{
[code].....
After I saw the methods in flash.utils package, I decided to make a try:
// inside file Test.as
package com.tests
{
[code].....
Are custom functions that are defined at the "default" package level (aka Top Level) included in a compiled SWC? Or are they ignored?
//Compiled, or not to be compiled in a SWC - that is the question...
package {
public function topLevelMethod():void {
trace("Hello World");
}
Anyone experienced problems with this?
I'm running into this weird thing with ASDoc. It will only document one package function per package.For example.I have these two functions:
gs.util.printf
gs.util.ftrace
In these files:
gs/util/printf.as
gs/util/ftrace.as
The only function that get's documented in ASDocs is "printf". But I know it can do more than one. As an example, in the livedocs [URL] There are more than one functions documented.
I have two layers in my FLA both with empty movie clips as follows:In mc_Empty1, I attach a faded background movieclip as I wait for mc_Empty2 to load a SWF. Once the SWF is loaded into mc_Empty2, I want to remove the faded background movieclip from mc_Empty1. When I load the SWF from the main timeline, the onLoad() function works and removes the faded background from mc_Empty1. However, when I load the SWF from mc_target, the SWF loads, but the onLoad() function does not. Here's my AS2 code:
//Loading SWF from main timeline
mc_Empty1.attachMovie("mcFadedBg", "mc_FadedBg", 1);
mc_Empty2.loadMovie("My.swf");mc_Empty2.onLoad = function():Void{ trace("loaded"); //This works removeMovieClip(mc_Empty1.mc_FadedBg); //This works}
[code]....
I know I'm targeting properly because the SWF loads as it should, but the onLoad() function does not.
The "Programming Adobe ActionScript 3.0" states in chapter 4 "ActionScript Language and Syntax", "Packages and Namespaces", "Creating Packages" that you can declare at the top level of a package multiple variables, functions, and namespaces in addition to a single class as long as only one is declared "public".However, in Flash when I declare a public class and any other variable or function either with the "internal" attribute or no attribute, I get this error:5006: An ActionScript file can not have more than one externally visible definition: test.function1, test.Test
The package code is as follows:
package test{ internal function function1():String return "Function1()"; public class Test }}
[code].....
I'm having a little issue understanding scoping in this package environment. My question is this: Is it possible to declare globally visible variables and constants? I tried this with no successful results:
PHP Code:
package {
import flash.display.Loader;
import flash.display.Sprite;
import flash.net.URLRequest;
import games.mineAllMine.MineAllMine;
[Code] .....
I have a class Debug with a function called trace inside it which puts a TextField on the stage and outputs the text. Now I am trying to get the Debug.trace() function to do a "normal" debug trace as well from within side itself. of course this causes a recursive loop. I am trying to figure out how I can access the top level separately. I tried using namespaces such as AS3::trace but to no luck.
I know a solution is to rename my function to stop the conflict, but I would like that to be a last resort. It is being used in quite alot of places throughout my entire code so replacing it everywhere is going to be a ballache.
Below is a MXML code built from Flash Builder 4.5 with AIR SDK 3.0. Using Starling framework to create 2D animation and wonder how do I call a addText function without create a new instance of Game?
main.mxml is a main application:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" [code].....
I've been playing with AS3 and I just can't get my package to import into my fla. My folder structure is as follows.
Code:
|Fireworks
|--|classes
|--|--Fireworks.as
[Code]....
I've messed around with XML+FLASH menu systems (downloaded from various Flash resource sites) on a novice level . As in, I know how to modify the XML file to have the content I want and where to rename the XML file in the FLA if need be. But I've never had to actually manually modify any functions within the FLA before. I'm really green when it comes down to diggin' within the Flash coding. Anywho, I came upon this really nice horizontal/glide menu from a way talented flash guru who was nice enough to share his source files with me...
[Code]...
I have a project that needs some global variables. While developing on my local machine I made a 'globals.as' file which contains the following:
ActionScript Code:
package {
public class globals {
public static var gData:Object = {};
}}
I import that using
ActionScript Code:
import globals;
Then in my code if I need to create or access a global variable I can do something like:
ActionScript Code:
globals.gData.myNewVariable = "whatever";
This all worked fine until I exported the project to the web, suddenly it's as if globals.gData is not an object anymore. Only thing I can think of is that it's not importing globals.as. Is there a special way I have to embed globals.as into my project?
I'm trying to convert a working action into a package. Everything works fine in a Flash frame. I copied and pasted it into a class declaration and made the main function a public function. The action includes a timer declaration:
var fadeTimer:Timer=new Timer(50);
fadeTimer.addEventListener(TimerEvent.TIMER,fadeIm age);
In the package (but not in a frame), the function name "fadeImage" is thrown back as an undefined property. Again, copy & paste and it works fine in a Flash frame. Why the function is called successfully in a Flash frame but not in a package? The apparent space in fadeImage above is something this post is doing. I've tried placing both the function and the timer declaration inside and outside the public function. I've tried declaring "public var fadeTimer ..." No difference.
I downloaded a statistics package with files like basicStatistics.as. Inside the file it looks something like:
Code:
package statistics{
import statistics.utils.MathUtil;
public class BasicStatistics {
public static function getAverage(_numberArray:Array, _decimals:int = -1):Number{
etc...
How do I call the function getAverage from my main .as file. I have a project called statistics.fla. In the same directory are the statistics packages files and folder directories. My main as3 file is main.as which is in the same directory as the .fla file. I tried using import statistics but it didn't work. It gives an error. I tried using statistics.getAverage but that doesn't work either.
I'm having a small problem with packing my classes at the moment.Here's my problem
Code:
map[1][1].addUnit(new Infantry);
map is an array of MapTiles which are a part of the "Map" package I've created. addUnit is a
[code]......
I am working on AS3 and I have a created a button class which have an off state and on state. I did the class and it works fine, but i need a little fine tuning. Right now I am polling the button state from the root(main timeline) by checking a boolean property in the button class. I feel it is quite inefficient to check the button state on every enterFrame event of the main timeline. Rather I would prefer the button to tell the root time line by invoking a function written in the root, whenever a state change occurs. t should be cleaner , right?? But when I try to access a function in the root which goes like this
[Code]...
function countdown(){
timer--;
if(timer==0){[code]....
okay so there is my timer above, the timer counts down and everything else works exept for deleting the function at the end of the level, at the end of the level the script goes to another frame to show you have passed the level and then goes back to the previous frame to play the next level, all the new objects are made but the timer then counts double so its like the timer is running twice at a time so instead of counting down 1 everysecond it counts down 1 every half second, i have tried delete countdown();.i dont know how you actually make this work or how to go about it,
i have been trying to work out a way to have a endlevel function on my game....this function would, remove all event listeners, reset the cursor and most importantly clear all dynamically created movie clips(this is the part im having problems with).the first thing i tried was this:
[Code]...
so i am trying to create a "endlevel" function for my game, in this level i will need to remove all event listeners,stop all timers, remove all children off the stage and empty all arrays. i understand how to remove all event listeners and to stop all timers:
PHP Code:
myTimer1.stop;
myTimer2.stop;
[code]....
I am having troubles passing an x and y argument into a package function that creates a projectile on stage at the tank.gun's x and y.I have attached a zip of the code I am working on.[code]
View 6 RepliesI'm a newcomer to Actionscript programming and trying to modify a Flash site template downloaded from [URL] (which is an AS2 template). I've almost succeeded at what I need to do but have run into a couple of brick walls. One is that I've added a video player to the site and need to make the background music track smoothly fade out when the video starts and fade back in when it ends (or is stopped). I set up a listener object for the video player that works. It's the smooth fade of audio levels that doesn't.
[Code]...
If i have a series of variables that are referenced on an enter frame function, is it better to declare the frequently used vars at the class level? Is there a performance benefit? What is the standard?
Example
[Code].....
I have small issue in as3. I am load "mainmenu.swf" file into "main.swf". through loader class. so now "main.swf" is parent "mainmenu.swf" file children how can call "main.swf " variable & function from "mainmenu.swf" .
View 2 Repliesim trying to create a level select screen so the buttons unlock as you complete a level, so far i have this on each button:
on(release){
if(this.number <= currentItem){
gotoAndPlay(3);
}
}
[Code]...
This is making me a little kooky today. I thought I could defined a library path in PREFERENCES > ACTIONSCRIPT > ACTIONSCRIPT 3.0 SETTINGS then that library would be available to all AS3 FLA files, but that doesn't seem to work for me. If I use the PUBLISH SETTINGS and define the library path everything is fine.
Is there something that I could have done to disable the application level class path functionality? I guess I'm trying avoid having to set the library path for every new FLA I'm making.
I do not uderstand why the stop on the attached file does not work. If I change the profile to AS 2.0. it works but not using in AS 3.0. See attached file.
Attachments: Stoptest.zip (6.7 K)
Basically I have a function that is needs to tell 2 other classes to do something. It works for one of the classes: BigPlayButton, but not Background for some reason.TabMenu.as Class functionNote: The function below WILL call the hitPlayCircle function in my BigPlayButton class, but I get an undefined property error for the Background switchTitle function.
private function thumbClick(e:MouseEvent = null):void
{
trace("YOU CLICKED THUMBNAIL: " + e.target.id);
[code].....
I have an actionscript 2.0 program that goes through a sequence of frames stepping on eah one using the function stop()
I'm compiling the same script on flash cs 5, that only supports actionscript 3.0, and when running the script the stop() function is ignored
I had written this code out using Adobe CS3 and have recently upgraded to CS5. I haven't touched this site in forever and the last time that I did it worked great. The problem is as follows.type of page: galleryproblem: passing variablesthis is the original code that worked last time I checked it but has since stopped working.
function onClick(e:MouseEvent):void
{
trace(e.currentTarget.name);
[code].....
Code:
var vendor_arr:Array = new Array();
//vendor_arr.push(new Array());
var level1:Array = new Array("yelp","yelp","yelp","yelp","yelp","yelp");
var level2:Array = new Array("a","b","c","d","e","f");
var level3:Array = new Array(12,14,7,2,11,24);
[Code] .....
Why is it not sorting on "bdistance" ?? its returning 2, 14, 7, 12, 11, 24... what kind of sorting is this??
I am using the below function in one of my application, but its not working. It says
1120: Access of undefined property btnTwo.
For button I have given the instance name as btnTwo
btnTwo.addEventListener(MouseEvent.CLICK, btn2);
function btn2(event:MouseEvent):void {
gotoAndPlay(24);
}