I have a bunch of graphics assets in a fla, the MovieClips are linked to some classes. I export the fla as a swc , which I add to my library with the option "Merged into Code".All works great, I can create instances of my MovieClips , just by calling their classes like this.
example 1
var newMc:BaseClass = new GraphicAsset();
Now if I want do the following , Flash throws an error , GraphicsAssetClass is null!
//example 2
var GraphicsAssetClass:Class = getDefinitionByName("GraphicAsset") as Class;
The only way I can get the above line to work is to do this
//example 3
var newMc:GraphicAsset;
var GraphicsAssetClass:Class = getDefinitionByName("GraphicAsset") as Class;[code]....
where I could simply get the class by calling getDefinitionByName()like I do on example 2 , without having to resort to example 3 solution.
I cannot seem to accomplish what I thought would be a trivial task. I installed the SWC commands extension for CS3/CS4 and I am using it exactly as prescribed to create SWC files. When I point to them through the 'build path' prefs UI of my Flex project, one of two things happens:
1. If I created the SWC in CS4, Flex immediately crashes when it reads the file. When I re-open Flex it either crashes immediately or does so when I switch to design view and try to have access to the components panel where the new SWC should appear.
2. If I created the SWC in CS3, I perform the steps in Flex, and it seems like everything is OK, but the new component simply doesn't appear in the components panel at all. Flex behaves normally otherwise.
I can import third-party SWCs just fine in Flex otherwise.
Does anyone know what may be going on? I've even dumbed down my SWC to just a single movieclip containing a fill instead of something containing Actionscript, and it still behaves the same way.
I have the following project structure: A Flex Project (SDK 3.3) Multiple SWCs with grafics and textfields that are used as components in the Flex project.
Since I have a lot of SWCs that all use the same font in dynamic textfields, I do not want to embed the font in every SWC.Instead I want to have a library (RSL?) with the font from where all the SWCs load the font.
I tried to build a library file with the fonts using the "Export for runtime sharing" feature in Flash.While it works perfectly when I stay in Flash, Flex throws an "internal build error" when I try to use these SWCs in Flex.
I got a question in need of somebody who knows a lot more internals of the Flash system than I do. My artist designs the objects I use in my games as Movie Clips in Flash CS 4. I export those Movie Clips from Flash CS 4 to Flash Builder 4 via a SWC file. In order to do this, I select "export for ActionScript" in Flash CS 4, and "Export in Frame 1".
1. If a Movie Clip has 20 frames, does Flash export 20 drawings, 1 for each frame? If not, how does it do it?
2. I heard that if I have scripts in the frames, I will definitely get more objects instantiated, thus, for many instances of the Movie Clip in my game, I will get a performance hit.
3. Is it ok to add my scripts via "addFrameScript" in the Flash Builder-side, rather than put them in Flash CS 4?
Beginners Intro to SWC files SWCs are ZIP archives with two files in them: catalog.xml - Lists all classes contained in the SWC along with their dependencies.library.swf - Contains all the actual classes So theoretically... It should be possible to load in SWC files at run time and use the classes from them, right?
You may have to unzip it first and extract out the SWF, but this arduous process could be made easier with a few helper classes. In fact, having the "catalog.xml" there may also make it easier to identify which classes are contained within (which means you don't need to guess or assume which classes are in it). Has anyone tried this yet or know of anyone else who has?
I searched Google for a bit, but most results actually were actually mislabeled, and loading the SWC in at compile time. I found nothing relevant, so asking here is much easier.
Ok, this is a somewhat complicated issue dealing with SWCs and compilers. I've outlined steps to reproduce the problem below. I'm using the method outlined here to bring in Flash content to my project. I have 15-20 SWCs already, and it's working fine for those assets, the problem is specifically related to Flash's components (ComboBox, RadioButton etc.) If anyone has *any* advice on this, please let me know as we are completely stumped at this point!
The issue we're having involves using multiple external SWC files which contain AS3 components from Flash CS4. When two SWCs are linked to an ActionScript project (using Flash Builder 4 Beta (build 4.0.0)) there are collisions in the referenced classes which cause the most recently published SWC to knock out any duplicate classes in the other SWCs. A simple way to replicate this is as follows:
I'm having a new problem today- referring to arrays with getDefinitionByName. Anyways, in my map editor, I will have two layers of objects, and the user is responsible for choosing which layer of the map to write to. Because of this, I won't know the exact name of the array to write to until I piece together the string "map0Layer" and selectedLayer (chosen by the user):
Code: var targetString: String = "map0Layer"+selectedLayer; var mapTarget = getDefinitionByName(targetString) as Array; trace(mapTarget);
Through this, I'd like to refer to an array, but every variation of the above code I've tried resulted in ReferenceError: Error #1065: Variable map0Layer1 is not defined. (This is subject to change because it could be "map0Layer2" as well, but you get the idea.)
I have just bought FlashFirebug Pro, so I am able to run ActionScript at runtime.I would like to use the function getDefinitionByName, which comes with flash.utils.i get an error, when I import flash.utils.getDefinitionByName.
why the getDefinitionByName function works with "com.foo.Bar" and gives error with "com.foo.Rab"?My only clue is that the class com.foo.Bar was created before importing the project to Flash Builder 4.5 for PHP (4.5.1 namely).
My question is very specific, in fact you could try for yourself if you had FB4.5.1, a prior version of the same program, and a lot of time. Obviously I'm hoping to find someone who have experienced this particular issue or any related issue with similar functions.
How can I create SWCs using cs4.how to create SWC files that can be embedded in my code? I use CS4 under win XP, and hope to be able to create an SWC file containing my code and media files that is to be embedded in my final code.
building and using a SWC.Essentially, my only goal is to put a bunch of assets in a library, and have those assets included when a different swf is compiled. Compile-time, not runtime.
In my assets FLA, I add an FLV to the timeline of a movieclip. In the movieclip properties, I select Export for ActionScript and give it a unique classname ("FLV_intro"). In Publish Settings, I choose "Export SWC" and click Publish.
In my main FLA, I goto Actionscript Settings, Library Path, and add the SWC. In the code for my main FLA's document class, I do this:
var VideoClass:Class = getDefinitionByName("FLV_intro") as Class; _video = new VideoClass(); _videoHolder.addChild(_video);
The result is a SWF that does not have the increased filesize of the assets SWC (~30mb), and obviously, the video doesn't show up.Again, the goal here is to have large media assets, such as FLVs, external from the main FLA code, but the resulting SWF to contain everything when compiled - no external SWFs at runtime. The client requires a singe SWF. Additionally, I can use a different, smaller set of assets when developing to make development faster.
How can I create SWCs using cs4 inspired by a thread on code protection, I would like to learn how to create SWC files that can be embedded in my code? Googling gave me rather odd and useless results...I use CS4 under win XP, and hope to be able to create an SWC file containing my AS3 code and some media files that is to be embedded in my final code.
I'm in the process of planning a banner project, where I want to being able to output all banner formats (about 10+ of them) from the same flex project. They will all contain pretty much the same content but with some variation, and because of the size limit I want to load only the necessary assets for each format.
I wonder if there's a way to dynamically load different assets (in form of swf or swc) depending on some setting? I can of course load different swf:s into the main swf but I want only one swf per format. How about launch configurations, is there a way to choose different swc:s there?
Can someone tell me if its possible to create relative as opposed to absolute paths to swcs in module dependencies for Flex or actionscript modules?In Flex Builder i would simply edit the swc path as'../lib/.swc..But there doesn't seem to be a way to edit the path in IntelliJ once you've defined it.
I have the following scenarie in a multi-swf game:swf A loads an external swf B that loads a number of swf-assets.ApplicationDomain is set to ApplicationDomain.currentDomain.When I run swf B alone it can use getDefinitionByName on the loaded swf-assets to create instances of these. That all good.When I run swf A that loads swf B - swf B cannot use getDefinitionByName on its loaded swf-assets. Any ideas why this happens?
I'm also not sure if once the swf-assets are loaded using swf B would I then be able to do the following afterwards:swf A loads swf C (a different swf) and then instanciate the swf-assets loaded using swf B. I would like to have some kind of AssetManager that remembers every swf-asset loaded, so that I can easily re-instanciate assets in other parts of the game if needed instead of reloading these again and again?
I am currently working on a project that will load a swc, inspect it and allow the user to view the classes inside.I load the library.swf using Loader.loadBytes (the bytes come from the unzip library I use). I create an instance of the class using getDefinitionByName.This all works fine as long as getDefinitionByName is called on the next frame. If I call it straight away I get a reference error. To get round this I've come up with a rather hacky solution:
I really don't like using the enter frame event on the top level application. I also don't want to have to set up a timer. That's just as nasty.Loader.loadBytes doesn't fire a complete event so I don't know where I listen for an event for when the bytes have been fully loaded into the ApplicationDomain.
Can somebody explain what is the difference between getDefinitionByName and getDefinition inA AS3?When I load an external SWF I can't use getDefinitionByName because I get an Error #1065.
But using externalSWF_ContentLoaderInfo.applicationDomain.getDefinition works OK.So, why getDefinitionByName doesn't find the className?I mean, if the definition is inside the applicationDomain of the loaded SWF, why is not in the main SWF too? (I'm using Flex). I can't create new tags so I can't add the tags getDefinition and getDefinitionByName.
I have main application which contains ModuleManager. Different modules are loaded by this application. Both main application and loaded modules use my custom RSL. I need to get Class object in my RSL, which is defined in one of the modules. I'm trying to use getDefinitionByName function, but since my class is not defined in RSL, I get an exception (though module with needed class is loaded). Is it possible to make module classes visible to RSL code and to get the instance of it at runtime without changing project structure?
I am trying to create a library of transition effects. Each transition type or preset is its own class. In the Client/Main class I would like to create the transition type I need based off a static constant, hoping to save myself from having to write a long switch statement to select which type of transition class to instantiate.[code]I am not using the getDefinitionByName utility correctly, what am I missing here? Is there a different way to achieve class instantiation by passing in the name of the class as a string.
In my FLA I have a movieclip in the Library named "ContentPanel1". I have it's Linkage properties to export on first frame - class "ContentPanel1" and base class flash.display.MovieClip.
In my code I'm trying to attach an instance of this movieclip:
Code: var instanceClass:Class = getDefinitionByName("ContentPanel1") as Class; Now, here's the error I get:
I import a class file with path: "src.Objects.Thing" . Later in the code I try to call getDefinitionByName("Thing"). Unfortunately, I get: "1065: Variable Thing is not defined".The way I fixed this was by writing: getDefinitionByName("src.Objects.Thing"). However, this seems like a cumbersome solution. I would really like to be able to exclude the path when calling getDefinitionByName.
why i can't get a class defined by embed a .png file.like this:
[Embed(source = "../assets/level1/liquid4.png")] public var Liquid4:Class;
then in the same class:
var str:String = "Liquid" + 4; var disClass:Class = getDefinitionByName(str) as Class; addChild(new disClass() as DisplayObject);
there is nothing shows up and no error report.the program seems stoped at the getDefinitionByName line.what could be the problem,and how to get a style like this when i have multiple embeded image to go over.I learned that getDefinitionByName needs the class name as its parameters.which is not Liquid4,Liquid4 is just a varialbe that hold the reference to the actual class object.Well i did get things work,but there is another problem:
-I'm using FlashDevelop as my IDE environment,the root folder "scr" which has "Main.as" and "Preloader.as" class in it.when i test my class uint which Embeded the Fluid4 Class,it works,everyone is happy.but later i decided to move it to a separate folder under the root "src" folder.things get ugly,and error shows up indicating "can't find the class",The Embed picture class.but then i moved it out the subfoler ,everyThing works again fine.
--------------------------------------- [Embed(source = "../assets/level1/liquid4.png")] public var Liquid4:Class; then in the same class: //This gives us the actual class name
[code].....
This did work,but only in the "src" source file folder,not a sub folder of it.I checked this phenomenon many many times,and did use a tiny snippet program to prove it.It just doesn't work in the subfolder of "scr" root folder.
I've recently inherited an AIR project, which is basically a widget that displays product images and static content (contact details etc) on the desktop.The original project was developed in CS4/AS3, and has been published and works fine. Since then, the original developer has gone overseas and I've been hired to make new versions of this widget, UI reskins, different products, etc. I work in CS3, so I've had the original Flash authoring file saved down, gotten Flash CS3 to be able to publish for the AIR runtime, and found the relevant AIR classes that I need. This has all gone smoothly.
The problem I'm having, is that there seems to be some strange way that the original developer has linked the library items to their relevant classes, and I'm trying to unravel this.I'm going to use the clip called windowApplication as my example.In the library, there is a movie clip symbol called 'windowApplication'. In its linkage settings, its class is set to 'windowApplication', and its base class 'com.aca.windows.Application'.The Application class extends the MovieClip class.However, when I test the app, I get compiler errors
'5000: The class 'com.aca.windows.Application' must subclass 'flash.display.MovieClip' since it is linked to a library symbol of that type.' '1151: A conflict exists with definition SectionBackground in namespace internal.' (SectionBackground is the first variable declaration in the Application class. Commenting it out makes this error change to the second variable declaration).
I can remove this error by changing the class of the 'windowApplication' symbol to 'Application' and setting the base class to 'flash.display.MovieClip', however that doesn't seem to instantiate the class properly. The symbol appears onscreen, but none of its instantiating functions are called.
The windowApplication object is instantiated using a getDefinitionByName call. I've had a google and looked around various forums, and I've seen suggestions that classes used in getDefinitionByName need to also have a fake instantiation so that they're compiled in Flash. I've tried this but it makes no difference.It seems to me that the getDefinitionByName call is working properly, as it does bring up the correct symbol - but only when the base class is flash.display.MovieClip.
I had another movie clip, called sectionMain, that also had this problem. Its original class was 'sectionMain' and its base class is 'com.aca.sections.Main'. It, too, threw a compiler error 5000. I changed the symbol's class to 'Main' and the base class to 'flash.display.MovieClip', when testing the app, this brought up the symbol. When I changed it back to the original settings, it worked fine, the object was called properly and I could interact with it. However, when the errors with the Application class are thrown, I also get the 5000 error for the Main class - without having changed anything.When I change the class of the windowApplication symbol to 'Application' instead of 'windowApplication', I get a warning that Flash can't find the class and will create one at runtime.
I'm having a problem trying to use the method getDefinitionByName, I am using an array to store the names of the classes, the problem that arises is that when I am touring the settlement to create instances of classes shows me that error variable is not set, I've already created an instance of the classes that are in the array so the problem should not be because of this issue, only allows me to create the instance of an object in the array and when you try to create the following instance shows me the error that I mentioned previously
the fix that I'm using has these variables
"PlataformaPrueba", "PlataformaPrueba2"
and code with which I'm reading it:
Code: var className: String; var classReference: Class; var classReference1: Class;
I recently discovered the incredible functionality of getDefinitionByName(), I'm attempting to load in pages for an interactive book.Each page has its own functions, listeners, nested animations, and timers.When loading in these pages, no stop()s are working within the nested clips, and any interactivty has been lost.It's just a mess of a bunch of animations running over and over.[code]
In addition to having the MovieClips not running code, I am running into serious garbage collection issues.I can unload the pages from display, but all sounds continue playing.Does anyone have an idea of why these loaded MovieClips are not running code, and why they will not unload properly with the destroy() method?