Sound in loaded swf
i have a project i'm working on that loads various swfs into
a scrollPane object, the problem is that one of them contains sound
and the sound does not stop when a new swf is loaded into the
scrollPane? Does anyone know what happens to the previous swf when
you loaded another into the same scrollPane using the load
function? and anyway to stop the sound?
quote:
Originally posted by:
kglad
that's a class name. just copy the code and apply it. it will
work unless you have other sounds playing that you don't want
stopped.
i assume you would have to import the sound mixer class as
well. Anyway it seems to work so problem solved, thanks for the
help.
Similar Messages
-
(MX04) Pausing a loaded swf with sound objects within it
Hi,
I'm working on a PowerPoint-esque presentation where a user
watches and listens to a loaded swf in the main movie, clicks the
next button (which unloads the swf, advances to the next frame and
loads the next swf), and watches the next one. Lather, rinse,
repeat. Some of the sections are rather long, and I'd like to give
the user the ability to pause and play by button click.
I know how to stop and start the container MC, but that
doesn't stop the sound object (and the embedded MCs). I also know
how to pause and start a sound object using the object's instance
name. Is there a way to pause everything from the main timeline,
and keep the AS general enough so that any sound object pauses when
clicked?
Any help is most appreciated! MX04 and AS2.0.
Thanks!Kglad,
I tried your code and ran into some problems with stopping
the mc's, as the embedded mc's within the loaded swf need to stop
as well. I found the attached code to stop the mc's, but now am
having trouble with the sound objects.
Here's the issue, I used this:
this.soundPosition = currentMovie.loop1.position/1000;
this.currentMovie.loop1.stop();
... for the sound object stop commands and listed a new one
for each loop I was using. On the play button I started them back
up again. This all works, but when I start them up again they all
play, not just the one that is currently paused. Do you mind giving
me some guidance with the for (obj in mc) loop? My loop experience
is nil. What I want to do is have the code cycle through all of the
loops to see which one is playing, then store that information in a
variable, then pause and play the variable. Does that sound right?
Thanks again for the help!
-Sandy -
How can I stop timeline sounds in external swf files from playing during loading?
I am having a problem with timeline sounds in external swf files playing during loading in a main swf. Can anyone help me?
Here is some of the code from the main swf. I hope I have included enough.
Thanks.
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.ProgressEvent;
import flash.events.Event;
import flash.net.URLRequest;
import fl.events.SliderEvent;
import flash.media.SoundTransform;
preloader_mc.fill_mc.scaleX = 0;
var swfA:Array = ["part1.swf","part2.swf"];
var frameA:Array = [];
var currentLoader:Loader;
var swfTotalFrames:int;
var tl:MovieClip = this;
var st:SoundTransform = new SoundTransform()
var index:int = 0;
loadNextF();
play_slider.enabled = false;
function loadNextF():void{
tl["loader_"+index] = new Loader();
tl["loader_"+index].name = index.toString();
tl["loader_"+index].contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressF);
tl["loader_"+index].contentLoaderInfo.addEventListener(Event.COMPLETE,completeF);
tl["loader_"+index].load(new URLRequest(swfA[index]));
function progressF(e:ProgressEvent):void{
var fractionLoaded:Number = index/swfA.length+e.bytesLoaded/(e.bytesTotal*swfA.length);
preloader_mc.fill_mc.scaleX = fractionLoaded;
preloader_mc.tf.text = (100*fractionLoaded)+"% Loaded";
function completeF(e:Event):void{
tl["loader_"+index].contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,progress F);
tl["loader_"+index].contentLoaderInfo.removeEventListener(Event.COMPLETE,completeF);
SoundMixer.stopAll();
var mc:MovieClip = MovieClip(tl["loader_"+index].content);
mc.gotoAndStop(1);
frameA.push(mc.totalFrames);
index++;
if(index<swfA.length){
loadNextF();
} else {
// all loads complete. start play.
restart_mc.buttonMode = true;
restart_mc.alpha = 1;
tl.addEventListener(Event.ENTER_FRAME,playUpdateF);
tl.removeChild(preloader_mc);
preloader_mc = null;
play_slider.enabled = true;
playpause_mc.alpha = 1;
currentLoader = tl["loader_0"];
tl.addChild(currentLoader);
MovieClip(currentLoader.content).play();
sliderParamsF();import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.ProgressEvent;
import flash.events.Event;
import flash.net.URLRequest;
import fl.events.SliderEvent;
import flash.media.SoundTransform;
preloader_mc.fill_mc.scaleX = 0;
var swfA:Array = ["part1.swf","part2.swf"];
var frameA:Array = [];
var currentLoader:Loader;
var swfTotalFrames:int;
var tl:MovieClip = this;
var st:SoundTransform = new SoundTransform()
var index:int = 0;
loadNextF();
play_slider.enabled = false;
function loadNextF():void{
tl["loader_"+index] = new Loader();
tl["loader_"+index].name = index.toString();
tl["loader_"+index].contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressF);
tl["loader_"+index].contentLoaderInfo.addEventListener(Event.COMPLETE,completeF);
tl["loader_"+index].load(new URLRequest(swfA[index]));
function progressF(e:ProgressEvent):void{
var fractionLoaded:Number = index/swfA.length+e.bytesLoaded/(e.bytesTotal*swfA.length);
preloader_mc.fill_mc.scaleX = fractionLoaded;
preloader_mc.tf.text = (100*fractionLoaded)+"% Loaded";
function completeF(e:Event):void{
tl["loader_"+index].contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,progress F);
tl["loader_"+index].contentLoaderInfo.removeEventListener(Event.COMPLETE,completeF);
SoundMixer.stopAll();
var mc:MovieClip = MovieClip(tl["loader_"+index].content);
mc.gotoAndStop(1);
frameA.push(mc.totalFrames);
index++;
if(index<swfA.length){
loadNextF();
} else {
// all loads complete. start play.
restart_mc.buttonMode = true;
restart_mc.alpha = 1;
tl.addEventListener(Event.ENTER_FRAME,playUpdateF);
tl.removeChild(preloader_mc);
preloader_mc = null;
play_slider.enabled = true;
playpause_mc.alpha = 1;
currentLoader = tl["loader_0"];
tl.addChild(currentLoader);
MovieClip(currentLoader.content).play();
sliderParamsF();
///////////////// start sliders /////////////////////////////////
sound_slider.addEventListener(SliderEvent.CHANGE,soundSliderF);
function soundSliderF(e:SliderEvent):void{
st.volume = e.value/100;
tl.soundTransform = st;
play_slider.addEventListener(SliderEvent.CHANGE,playSliderF);
play_slider.addEventListener(MouseEvent.MOUSE_DOWN,playSliderDownF);
//play_slider.addEventListener(MouseEvent.MOUSE_UP,playSliderUpF);
function playSliderDownF(e:MouseEvent):void{
tl.removeEventListener(Event.ENTER_FRAME,playUpdateF);
stage.addEventListener(MouseEvent.MOUSE_UP,playSliderUpF);
function playSliderUpF(e:MouseEvent):void{
tl.addEventListener(Event.ENTER_FRAME,playUpdateF);
function playSliderF(e:SliderEvent):void{
SoundMixer.stopAll();
var frameNum:int = Math.ceil(swfTotalFrames*e.value/100);
var partialTotalFrames:int = 0;
for(var i:int=0;i<frameA.length;i++){
partialTotalFrames += frameA[i];
if(partialTotalFrames>=frameNum){
break;
partialTotalFrames -= frameA[i];
//trace(i,frameNum,frameNum-partialTotalFrames);
if(currentLoader!=tl["loader_"+(i)]){
tl.removeChild(currentLoader);
MovieClip(currentLoader.content).stop();
currentLoader = tl["loader_"+(i)];
tl.addChild(currentLoader);
if(playpause_mc.currentFrame==1){
MovieClip(currentLoader.content).gotoAndPlay(frameNum-partialTotalFrames);
} else {
MovieClip(currentLoader.content).gotoAndStop(frameNum-partialTotalFrames);
function sliderUpdateF(e:Event):void{
var playedFrames:int = 0;
for(var i:int=0;i<Number(currentLoader.name);i++){
playedFrames += frameA[i];
playedFrames += MovieClip(currentLoader.content).currentFrame;
play_slider.value = Math.round(100*playedFrames/swfTotalFrames);
function sliderParamsF():void{
swfTotalFrames = 0;
for(var i:int=0;i<swfA.length;i++){
swfTotalFrames += MovieClip(tl["loader_"+i].content).totalFrames;
///////////////// end sliders //////////////////////////////////
///////////////// start playpause restart ///////////////////////
playpause_mc.addEventListener(MouseEvent.CLICK,playpauseF);
playpause_mc.alpha = .2;
restart_mc.addEventListener(MouseEvent.CLICK,restartF);
restart_mc.buttonMode = false;
restart_mc.alpha = .2;
function playpauseF(e:MouseEvent):void{
if(!e.currentTarget.toggle){
MovieClip(currentLoader.content).stop();
tl.removeEventListener(Event.ENTER_FRAME,playUpdateF);
e.currentTarget.gotoAndStop(2);
} else {
MovieClip(currentLoader.content).play();
tl.addEventListener(Event.ENTER_FRAME,playUpdateF);
e.currentTarget.gotoAndStop(1);
e.currentTarget.toggle = !e.currentTarget.toggle;
///////////////// end playpause //////////////////////////////
function playUpdateF(e:Event):void{
sliderUpdateF(e);
var playingFrame:int = MovieClip(currentLoader.content).currentFrame;
if(playingFrame==frameA[Number(currentLoader.name)]){
// next loader
MovieClip(currentLoader.content).stop();
SoundMixer.stopAll();
MovieClip(currentLoader.content).mute();
var nextIndex:int = Number(currentLoader.name)+1;
if(nextIndex<swfA.length){
tl.removeChild(currentLoader);
currentLoader = tl["loader_"+nextIndex];
tl.addChild(currentLoader);
MovieClip(currentLoader.content).gotoAndPlay(1);
} else {
tl.removeEventListener(Event.ENTER_FRAME,playUpdateF);
playpause_mc.gotoAndStop(2);
playpause_mc.toggle = !playpause_mc.toggle;
//playpause_mc.alpha = .2;
// all swfs have completed play
function restartF(e:MouseEvent):void{
MovieClip(currentLoader.content).stop();
tl.removeChild(currentLoader);
SoundMixer.stopAll();
MovieClip(currentLoader.content).mute();
currentLoader = tl["loader_"+0];
tl.addChild(currentLoader);
if(playpause_mc.currentFrame==1){
MovieClip(currentLoader.content).gotoAndPlay(1);
} else {
MovieClip(currentLoader.content).gotoAndStop(1); -
SWFloader loads SWF movie within Flex but not when compiled
When I run my app in Flex, SWFLoader loads the SWF okay as a movie clip but as soon as I Export/Release Build, the new app SWF that is generated won't show the movie clip anymore. If I take another SWF that is an app (not a movie clip) and give it the movie swf name, my compiled app will show the sub app in a frame. Why would running something within Flex be any different than running a compiled version?
Here is some of the code:
button1 loads the swf.
button2 loads a sound and when the sound is loaded, the sound is played and the swf is played in onSoundLoaded();
public function onSoundLoaded(event:Event):void{
var localSound:Sound = event.target as Sound;localSound.play();
var clip:MovieClip = MovieClip(swflodr.content);
clip.play();
private
function button1Handler(event:Event):void {Alert.show("test 1");swflodr.load(
"dog.swf");Alert.show(
"test 2");}
private
function button2Handler(event:Event):void
var s:Sound = new
Sound();s.addEventListener(Event.COMPLETE, onSoundLoaded);
var
req:URLRequest = new URLRequest("test.mp3");
s.load(req);
private function SwfLodrEventHandler(event:Event):void {
var clip:MovieClip = MovieClip(swflodr.content);clip.gotoAndStop(1);
Alert.show(
"The event loader is ready");}
thanks, MikeMaybe timing? The child SWF may not be fully loaded. Sounds and SWFs are asynchronously loaded.
Alex Harui
Flex SDK Developer
Adobe Systems Inc.
Blog: http://blogs.adobe.com/aharui -
Loading swf files from an iPhone Air App
Although the faq says its possible ( http://bit.ly/gyxmCo ) I can't seem to load .swf files from my app.
There's no .AS code in the .swf file I'm trying to load.
PNG files load with no problems, swf's fail.
A working example would be appreciated instead of suggestions, I've spent the entire day trying out suggestions
regards,
MartijnBecause I can't see any library assets in an as2.0 file.
I've discovered that the swf fails to load as soon as you make a symbol 'export for actionscript'
probably because it will then create a class. So you can only load SWF's as simple pictures or animations, you cant use it as an asset library with multiple animations/images/sounds in it..
As for you other questions:
it doesnt matter if the file is local or on the web. same results
I created the swf file from a fla in CS4, and I'm compiling my air project that loads the swf with FlashDevelop. -
Invoking class from loaded swf
I'm working on a project where I'm loading in a video player
as an external swf to my main movie. I'm not able to get my video
or the custom player to show up, but sound is there (I've done the
whole Library>New Video thing, so I have a video object to
reference).
My question is: My loaded swf uses #include to include a
script which imports two classes from a subdirectory, could that be
causing the problem? My main movie never uses the classes.
Just want to make sure this isn't my problem before I go
digging into the script again!That is unlikely to be the problem. The .as includes are
compiled into the
SWF at publish. Much more likely is that you have
inappropriate references
to _root in your loaded movie. As it stands, the scope of
_root, once you
load the movie into another, is the _root of the *loading*
movie. Either
change these refs, or set the _lockroot property of the mc
you are loading
into to true.,
Remove '_spamkiller_' to mail -
Can't stop music in loaded swf
I have used Loader to load an swf which has looping music.
When I call unload - the music keeps playing.
Could someone please help me?
Code below:Thankyou. When I say SoundMixer.stopAll(); I get the
following error message
1120: Access of undefined property SoundMixer.
I have added these 2 statements at the top of my package:
import flash.media.Sound;
import flash.media.SoundChannel;
Any help is appreciated.
As for the alternative method, if the loaded movieclip has a
single-frame event wav file (set to repeat on a single frame in the
timeline) what is the correct path to the loaded swf's sound
instance? -
Removing a loaded swf.. ??
I've loaded a swf into a MovieClip and I want it to be
removed when I hit a button.
My attempt to do so is like this:
swfContainer.removeChild(swfLoader);
At first it seem to work but since the loaded swf contains
sounds and music the music continues to play.
Anyway heres the code for loading the swf:
(Thanks in advance...)var swfLoader:Loader= new Loader();
swfLoader.load(new URLRequest("pcA.swf"));
//Get the New instance Name of the added SWF using a Variable
var resultSWF = pc.addChild(swfLoader);
//Now remove it using removechild
pc.removeChild(resultSWF) -
Controling a loaded swf with another loaded swf
I have a blank stage with only AS that loads an swf
addChildAt(0) and a second one addChildAt(1). This works. When the
user interacts with (1) it calls another addChild (not indexed) and
possibly that one loads another, depending on the choices made by
the user. How can I get any of these to control that very first
child that was loaded at (0)? I have run out of ideas.
Some of the code:
(on the main swf, nothing on the stage, only code that loads
the next two)
addChildAt(pHolder, 0);
pLoader.load(pURLReq);
pLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,
pLoaded);
and for the second:
addChildAt(mHolder, 1);
mLoader.load(mURLReq);
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,
mLoaded);
On the child of childAt(1), I have:
function replaceSWF(e:MouseEvent):void
pLoader = new Loader();
pLoader.load(new URLRequest("p.swf"));
pLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,
placeNewClip);
function placeNewClip(e:Event):void
removeChildAt(0);
addChildAt(e.target.content, 0);
If I use this exact same code from that very first swf, the
one that loads the first two external swfs, it works, but once I
put it on one of hte other loadeds and sub loaded swfs, I can't get
it to work. In the current state (0) it just makes everything on
the stage disappear, so I figured then using the index of (1) would
do it, but that or any other number results in absoluly nothing.
Help! I am really out of ideas here.
(the stacking looks like this) ---
sub second loaded SWF <==== needs to tell first loaded SWF
to unload then load a new swf at same index
second loaded SWF <==== loads the next one above
first loaded SWF <=== needs to be removed and another swf
loaded at the same index
mainSWF (loads two others) <=== code placed here works for
first loaded SWFKglad,
I tried your code and ran into some problems with stopping
the mc's, as the embedded mc's within the loaded swf need to stop
as well. I found the attached code to stop the mc's, but now am
having trouble with the sound objects.
Here's the issue, I used this:
this.soundPosition = currentMovie.loop1.position/1000;
this.currentMovie.loop1.stop();
... for the sound object stop commands and listed a new one
for each loop I was using. On the play button I started them back
up again. This all works, but when I start them up again they all
play, not just the one that is currently paused. Do you mind giving
me some guidance with the for (obj in mc) loop? My loop experience
is nil. What I want to do is have the code cycle through all of the
loops to see which one is playing, then store that information in a
variable, then pause and play the variable. Does that sound right?
Thanks again for the help!
-Sandy -
Load SWF file in main SWF with parameters
Hello everybody,
I recently got a new flash Application which is a Photo Gallery.
This App is made of multiple folders (source files), a FLA file, a SWF with its javascript SWFObject and an Html page which instantiate this App with some parameters (size, config file path, ...).
It needs an XML file to find all the Photos it displays, to do it I need to configure my application in the HTML Page and give it the "xml_path" :
var so = new SWFObject("index.swf", "gallery", "249", "249", "10", "#111111");
so.addVariable("xml_path","load/config.xml"); // this line is adding the path to the xml file make sure that it's name is xml_path
so.addParam("allowfullscreen","true");
so.write("flashcontent");
By the way, I have a second application, the WebSite, which have to display the Gallery SWF in its "Gallery" page.
Here is how I do it at the moment (in ActionScript3) :
var swfRequest:URLRequest = new URLRequest("C:/......../Galerie/index.swf");
var swfLoader:Loader = new Loader();
//Charge le SWF Galerie dans le SWF Site
swfLoader.load(swfRequest, context);
container1.addChild(swfLoader);
//Positionne le SWF
swfLoader.x=10;
swfLoader.y=120;
It successfully loads the Gallery application but It shows an error telling me it doesn't find the XML configuration file... In the HTML file I simply had to write the "so.addVariable("xml_path","load/config.xml");" to tell where the XML file is...
So, my question is : How can I integrate my SWF application giving it some parameters like above, in Action Script 3?
Thank you ,
PatrickNo, nothing with HTML.
I have 2 SWF applications. One is the Gallery, and the second is my Main Page.
My Main Page must integrate the Gallery module in one of its page.
The problem is when I try to integrate it, I think I must give de future loaded SWF some parameters like this :
(My Main SWF loading in HTML)
var so = new SWFObject("WebSite.swf", "flashcontent", "520", "700", "10", "#111111");
so.addParam("allowfullscreen","true");
so.addParam("allowScriptAccess","always");
so.addParam("menu","false");
so.addParam("wmode","opaque");
so.addParam("bgcolor","#000000");
so.setAttribute("id","flash");
so.write("flashcontent");
It was for the Main App. For my Gallery SWF I had to load it like this (in HTML) :
var so = new SWFObject("Gallerie.swf", "gallery", "249", "249", "10", "#111111");
so.addVariable("xml_path","Galerie/config.xml"); // this line is adding the path to the xml file make sure that it's name is xml_path
so.addParam("allowfullscreen","true");
so.write("flashcontent");
So at the beginning I had 2 different projects with an HTML page for each.
Now I wan't to directly integrate the Gallery SWF into the Main SWF. And as you have seen I must give it some parameters such as the "xml_path" and "allowfullscreen". This must be done in ActionScript 3 and I don't know how...
I think I have to use FlashVars but I don't know how. As I said before, I have tried using the loaderinfo.parameters, but it is in read-only...
Do you have an idea of how I can make it work ? -
Using TextSnapshot class on a loaded SWF on an iPad
Hello, I am creating an iPad app. I am loading SWF files using a Loader object, then placing them in a movieclip and setting a SWFLoaders source property to this clip. Before I add the clip to the SWFLoader control I am using the TextSnapshot class on it, to retrieve an array with the getTextRunInfo method.
All this works fine when I test it on my desktop machine. However, on the iPad it causes the app to crash when a control using this clip is added to the stage. Can you still use TextSnapshot with an iPad, is there a workaround for this? Thanks for your help.We are a university. most of our books are SWF files. We have been using iPad/FlexBuilder 4.5 to successfully view the contents of these books.
All navigation (i.e gotoandstop(page), etc work fine. Gestures for pageforward/pageback, zoom, pan work fine also.
Not sure I understand your comment.
However, there IS a specific problem with text snapshot. Below is a short code piece used to highlight text on a page.
If you remove the failing line everything works fine.
If you "debug" the iPad device everything works fine when you execute the code on the iPad
if you create a release build, when the application starts and the "findtext" line is executed the "app" freezes. No error message. The try/catch does not seem to catch any error.
This is something we really need for our app. If this is a bug how should we report it.
Thanks for your help.
public function highlightText(txt:String):void {
var start_pos:int = 0;
try {
if (txt == null || txt.length == 0) { return; }
infoMessage("highlightText: " + txt);
allText = _libMC.textSnapshot;
allTexts.push(allText); // no reason for this but must do to make work
start_pos = allText.findText(start_pos, txt, false); <<<<<< Failing line ====================================
infoMessage("start_pos: " + start_pos);
catch (err:Error) {
infoMessage("error: " + err.message);
finally {
infoMessage("finally"); -
ipad i have load swf file but swf is not working proper(flex 4.6) but android is fine to work how
On the MBP, in iTunes, switch to Song view and enable the iCloud Status column by pulling down View > View options and selecting the option for "iCloud Status." Close the small window. Look for any tracks that have a status of "waiting." If you see several of them disable iTunes Match while holding down the Option key. Quit iTunes, wait a few seconds, then open it again and turn iTM back on. Let it compelete the scan. Wait until all tracks that are "waiting" have a status of either "matched" or "uploaded."
On the iPad, turn off iTunes Match then launch the Music app and let the contents clear out. Power cycle the iPad for good measure, then re-enable the service once all the tracks in iTunes have been processed. -
How to unload externally loaded swf which contains 3D Carousel?
Hello to all
I am learning AS3 and have been taking on various tutorials found on the net. While learning about AS3 I came across a lesson on http://tutorials.flashmymind.com/2009/05/vertical-3d-carousel-with-actionscript-3-and-xml/ titled "Vertical 3D Carousel with AS3 and XML".
I completed the tutorial and all worked fine so I then wanted to load the swf into a existing project. The loading of the swf goes fine and when I unload my loader it is removed but only visually as in my output panel in flash CS5 I get an error as follows
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at carousel_c_fla::MainTimeline/moveCarousel()
this error repeats over and over again slowing my swf movie.
So does this mean my main flash movie trying to still play / find my unloaded 3D Carousel?
If so how do I unload remove all the AS3 that is trying to run from the 3D Carousel?
I have included the AS3 below from the tutorial page and I understand that this is what I have to remove to "break free" from the 3D Carousel swf when it is unloaded. This is where I am stuck as my knowledge of AS3 is limited - Can you guys / girls help?
//Import TweenMax
import com.greensock.*;
//The path to the XML file (use your own here)
// old var from tutorial - var xmlPath:String = "http://tutorials.flashmymind.com/XML/carousel-menu.xml";
var xmlPath:String = "carousel-menu.xml";
//We'll store the loaded XML to this variable
var xml:XML;
//Create a loader and load the XML. Call the function "xmlLoaded" when done.
var loader = new URLLoader();
loader.load(new URLRequest(xmlPath));
loader.addEventListener(Event.COMPLETE, xmlLoaded);
//This function is called when the XML file is loaded
function xmlLoaded(e:Event):void {
//Make sure that we are not working with a null variable
if ((e.target as URLLoader) != null ) {
//Create a new XML object with the loaded XML data
xml = new XML(loader.data);
//Call the function that creates the menu
createMenu();
//We need to know how many items we have on the stage
var numberOfItems:uint = 0;
//This array will contain all the menu items
var menuItems:Array = new Array();
//Set the focal length
var focalLength:Number = 350;
//Set the vanishing point
var vanishingPointX:Number = stage.stageWidth / 2;
var vanishingPointY:Number = stage.stageHeight / 2;
//We calculate the angleSpeed in the ENTER_FRAME listener
var angleSpeed:Number = 0;
//Radius of the circle
var radius:Number = 128;
//This function creates the menu
function createMenu():void {
//Get the number of menu items we will have
numberOfItems = xml.items.item.length();
//Calculate the angle difference between the menu items (in radians)
var angleDifference:Number = Math.PI * (360 / numberOfItems) / 180;
//We use a counter so we know how many menu items have been created
var count:uint = 0;
//Loop through all the <button></button> nodes in the XML
for each (var item:XML in xml.items.item) {
//Create a new menu item
var menuItem:MenuItem = new MenuItem();
//Calculate the starting angle for the menu item
var startingAngle:Number = angleDifference * count;
//Set a "currentAngle" attribute for the menu item
menuItem.currentAngle = startingAngle;
//Position the menu item
menuItem.xpos3D = 0;
menuItem.ypos3D = radius * Math.sin(startingAngle);
menuItem.zpos3D = radius * Math.cos(startingAngle);
//Calculate the scale ratio for the menu item (the further the item -> the smaller the scale ratio)
var scaleRatio = focalLength/(focalLength + menuItem.zpos3D);
//Scale the menu item according to the scale ratio
menuItem.scaleX = menuItem.scaleY = scaleRatio;
//Position the menu item to the stage (from 3D to 2D coordinates)
menuItem.x = vanishingPointX + menuItem.xpos3D * scaleRatio;
menuItem.y = vanishingPointY + menuItem.ypos3D * scaleRatio;
//Add a text to the menu item
menuItem.menuText.text = item.label;
//Add a "linkTo" variable for the URL
menuItem.linkTo = item.linkTo;
//We don't want the text field to catch mouse events
menuItem.mouseChildren = false;
//Assign MOUSE_OVER, MOUSE_OUT and CLICK listeners for the menu item
menuItem.addEventListener(MouseEvent.MOUSE_OVER, mouseOverItem);
menuItem.addEventListener(MouseEvent.MOUSE_OUT, mouseOutItem);
menuItem.addEventListener(MouseEvent.CLICK, itemClicked);
//Add the menu item to the menu items array
menuItems.push(menuItem);
//Add the menu item to the stage
addChild(menuItem);
//Assign an initial alpha
menuItem.alpha = 0.3;
//Add some blur to the item
TweenMax.to(menuItem,0, {blurFilter:{blurX:1, blurY:1}});
//Update the count
count++;
//Add an ENTER_FRAME listener for the animation
addEventListener(Event.ENTER_FRAME, moveCarousel);
//This function is called in each frame
function moveCarousel(e:Event):void {
//Calculate the angle speed according to mouseY position
angleSpeed = (mouseY - stage.stageHeight / 2) * 0.0002;
//Loop through the menu items
for (var i:uint = 0; i < menuItems.length; i++) {
//Store the menu item to a local variable
var menuItem:MenuItem = menuItems[i] as MenuItem;
//Update the current angle of the item
menuItem.currentAngle += angleSpeed;
//Calculate a scale ratio
var scaleRatio = focalLength/(focalLength + menuItem.zpos3D);
//Scale the item according to the scale ratio
menuItem.scaleX=menuItem.scaleY=scaleRatio;
//Set new 3D coordinates
menuItem.xpos3D=0;
menuItem.ypos3D=radius*Math.sin(menuItem.currentAngle);
menuItem.zpos3D=radius*Math.cos(menuItem.currentAngle);
//Update the item's coordinates.
menuItem.x=vanishingPointX+menuItem.xpos3D*scaleRatio;
menuItem.y=vanishingPointY+menuItem.ypos3D*scaleRatio;
//Call the function that sorts the items so they overlap each other correctly
sortZ();
//This function sorts the items so they overlap each other correctly
function sortZ():void {
//Sort the array so that the item which has the highest
//z position (= furthest away) is first in the array
menuItems.sortOn("zpos3D", Array.NUMERIC | Array.DESCENDING);
//Set new child indexes for the item
for (var i:uint = 0; i < menuItems.length; i++) {
setChildIndex(menuItems[i], i);
//This function is called when a mouse is over an item
function mouseOverItem(e:Event):void {
//Tween the item's properties
TweenMax.to(e.target, 0.1, {alpha: 1, glowFilter:{color:0xffffff, alpha:1, blurX:60, blurY:60},blurFilter:{blurX:0, blurY:0}});
//This function is called when a mouse is out of an item
function mouseOutItem(e:Event):void {
//Tween the item's properties
TweenMax.to(e.target, 1, {alpha: 0.3, glowFilter:{color:0xffffff, alpha:1, blurX:0, blurY:0},blurFilter:{blurX:1, blurY:1}});
//This function is called when an item is clicked
function itemClicked(e:Event):void {
//Navigate to the URL that's assigned to the menu item
var urlRequest:URLRequest=new URLRequest(e.target.linkTo);
navigateToURL(urlRequest);Hi Ned thanks for the reply,
Ok so I have a button in my main movie that loads the external swf
stop();
var my_loader:Loader = new Loader();
var my_btn:Button = new Button();
var my_pb:ProgressBar = new ProgressBar();
my_pb.source = my_loader.contentLoaderInfo;
my_btn.addEventListener(MouseEvent.CLICK,startLoading);
function startLoading(e:MouseEvent):void{
my_loader.load(new URLRequest("carousel.swf"));
addChild(my_pb);
my_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, finishloading);
function finishloading(e:Event):void{
addChild(my_loader);
my_loader.addEventListener("killMe",
killLoadedClip);
removeChild(my_pb);
function killLoadedClip(e:Event):void {
my_loader.removeEventListener("killMe",
killLoadedClip);
my_loader.unloadAndStop();
removeChild(my_loader);
Then I have a button in my loaded swf that closes the loader
This is spread over 2 frames
Frame1
function closeIt(e:MouseEvent):void {
parent.dispatchEvent(newEvent("killMe"));
Frame 2
back_btn.addEventListener(MouseEvent.CLICK, closeIt);
Frame 2 also holds all the code for the carousel
Thanks for your time and help in advance people ; ) -
I've created a 'plugin' SWF file in CS3 using actionscript 3.
The purpose of this file is to be included as a postroll in the
open source flash media player JW FLV/Media Player (
http://www.jeroenwijering.com/?item=JW_Media_Player).
I have heavily customized the media player libraries to do
various new things/alter how things worked, and now want to be able
to include the SWF file within this into a child sprite/movie clip.
HOWEVER, the problem lies in that the media player is written
completely in AS2, and therefore I have to use the MovieClipLoader
class to load in the SWF. Updating the source to AS3 isn't an
option unfortunatly, and downgrading the AS3 SWF to AS2 isn't an
option either, mainly due to the fact I've learnt AS3, not AS2, and
find it frustrating trying to find the AS2 equivalent to the AS3
methods I know.
The problem though lies in that MovieClipLoader does not like
my SWF at all. Initially I was presented with a load of sandbox
errors from when it was loaded in, which I then resolved so that no
security errors are produced. However, whenever I load in the clip,
the target sprite/clip is empty. I have gone through checking that
no errors occur on load, and it reports that the loaded SWF has
been initialized, yet I see nothing. Also, the code loading the SWF
is not at fault as it loads any other SWF (even another AS3 SWF
which just creates a rectangle) no problem.
Oddly enough, using the MovieClip.loadMovie method works in
one situation - when you load it into the root of the AS2 file.
When loading it into an empty movie clip, the same problem of a
blank clip occurs. The problem is not specific to the media player
either, as it happened in any AS2 file where I was testing how to
load in the AS3 SWF.
If it is of any use, the sandbox errors produced by the AS3
file when loaded into AS2 swf I had to resolve where to do with
stage access for getting the stage height and width, and a
Loader.content error when pulling out the BitmapData. These were
resolved via setting the allowed domains policy and eliminating any
reference to stage.stageHeight/With.
Does anyone have any ideas on how to solve this? The only
possible solution I've been able to think of so far since the AS3
swf won't display is to play with the LocalConnection class as
tests showed I can communicate between the AS2 and AS3 files, but
this would have to be a last resort, and is less than ideal when
there can be multiple instances of the player running (I would need
to use unique connection names for each instance so as to prevent
player A interacting with player B, and also as only one of the
players can listen on the connection at once).I have the component in the top level also,
I get this error:
TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/addChildAt()
at fl.controls::BaseButton/drawBackground()[C:\Program Files (x86)\Adobe\Adobe Flash CS5\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\controls\BaseButton.as:615]
at fl.controls::LabelButton/draw()[C:\Program Files (x86)\Adobe\Adobe Flash CS5\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\controls\LabelButton.as:724]
at fl.core::UIComponent/drawNow()[C:\Program Files (x86)\Adobe\Adobe Flash CS5\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\core\UIComponent.as:1343]
at fl.controls::List/drawList()[C:\Program Files (x86)\Adobe\Adobe Flash CS5\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\controls\List.as:594]
at fl.controls::List/draw()[C:\Program Files (x86)\Adobe\Adobe Flash CS5\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\controls\List.as:474]
at .tree::TreeList/draw()
at fl.core::UIComponent/callLaterDispatcher()[C:\Program Files (x86)\Adobe\Adobe Flash CS5\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\core\UIComponent.as:1532]
I've checked the definitions for the tree component,
The LabelButton and List I don't have much control over.
I'm not sure how to fix this. The xml is correct and loads easily if it's in the root document.
The list component doesn't load the labels, It stops on the first one.
What do I do next? -
How to effectively remove a loaded SWF from the stage?
I can not figure out a proper coding to remove a loded SWF from the stage.
Here is my set up.
I have a layout segmented into labeled section. In the section labeled "products" I have a layout consisting of product images acting as buttons which bring a user to another labeled section "prdctsPopUps"
In the "prdctsPopUps" section I have placed an instance of LoaderMax placed into an mc container. Placing LoaderMax into an mc container automatically resolved an issue of clearing loaded SWFs from stage when I come back to "products" section.
I specified the variable in the "products" section with the following set up:
var sourceVar_ProductsPopUps:String;
function onClickSumix1PopUp(event:MouseEvent):void {
sourceVar_ProductsPopUps="prdcts_popups/sumix1-popup_tl.swf";
gotoAndPlay("prdctsPopUps");
So each button has its own "....swf" URL and they all open fine and I can come back to "products" section without any issues.
However inside the swf (which loads through LoaderMax which is placed into an mc) there are other buttons which bring a user to labeled section "xyz". Which also functions properly. It opens as it is supposed to be and without any previously loaded "...swf" on the stage.
At the labeled section "xyz" there is a limited set of buttons repeating from section "products" which has to bring a user back to the same set up in the "prdctsPopUps" labeled section and open a corresponding "...swf" .
However only the last opened "...swf" will appear in that section. Effectively the one which was originally opened from the "prdctsPopUps" section and not the one which was supposed to be opened from the "xyz" section.
I can not understand why it would work from one labeled section and not from another. I can not figure out on which section which code/function needed to be placed.
Here is the set up from a button from the "xyz" section whcih supposed to bring a user to the same "prdctsPopUps" section but to load a different "...swf"
var sourceVar_ProductsPopUps_fromXYZ:String;
function onClick_floralytePopUp_fromXYZ(event:MouseEvent) :void {
sourceVar_ProductsPopUps_fromXYZ="prdcts_popups/floralyte-popup_tl.swf";
gotoAndPlay("prdctsPopUps");
Here is the code set up for the LoaderMax from the "prdctsPopUps" section:
var loaderProductPopUps:SWFLoader = new SWFLoader(sourceVar_ProductsPopUps,
estimatedBytes:5000,
container:holderMovieClip,
onProgress:progressHandler,
onComplete:completeHandler,
centerRegistration:true,
alpha:1,
scaleMode:"none",
width:540,
height:730,
crop:true,
autoPlay:false
function progressHandler(event:LoaderEvent):void{
progressBarPopUp_mc.gradientbarPopUp_mc.scaleX = loaderProductPopUps.progress;
function completeHandler(event:LoaderEvent):void{
var loadedImage:ContentDisplay = event.target.content;
TweenMax.to(progressBarPopUp_mc, 1.5, {alpha:0, scaleX:0.25, scaleY:0.25});
loaderProductPopUps.load();
Is there something which needs to be imported, or specific function needs to be specified in a specific labeled section?actually, i think you'll need to use something like:
var loaderProductPopUps:SWFLoader;
if ((loaderProductPopUps){
if(loaderProductPopUps.content)){
loaderProductPopUps.unload();
loaderProductPopUps= new SWFLoader(sourceVar_ProductsPopUps, //the value of sourceVar_ProductsPopUps allows to load mulitple SWFs from the products page.
estimatedBytes:5000 ,
container:holderMov ieClip,// more convinient and easier to manage if to place the LoaderMax into an empty mc (holderMovieClip)
// if not will work as well. Then the line container:holderMovieClip, has to be replaced with container:this,
// can be any size, can not be scaled as it distorts the content
onProgress:progress Handler,
onComplete:complete Handler,
centerRegistration: true,
//x:-260, y:-320, //no need for this is if used: centerRegistration:true,
alpha:1,
scaleMode:"none",
//scaleX:0, scaleY:0,
//vAlign:"top",
width:540,
height:730,//scales proportionally but I need to cut off the edges
crop:true,
autoPlay:false
function progressHandler(event:LoaderEvent):void{
progressBarPopUp_mc.gradientbarPopUp_mc.scaleX = loaderProductPopUps.progress;
function completeHandler(event:LoaderEvent):void{
var loadedImage:ContentDisplay = event.target.content;
//TweenMax.to(loadedImage, 1.5, {alpha:1, scaleX:1, scaleY:1});//only need this line if corresponding values are changed in SWF loader constructor
TweenMax.to(progressBarPopUp_mc, 1.5, {alpha:0, scaleX:0.25, scaleY:0.25});
loaderProductPopUps.load();
Maybe you are looking for
-
Renewing Creative Cloud for teams, but cancelling some of the seats
Hi all, When our CC for Teams renewal comes up in December, I want to go ahead with it, but also reduce the number of seats we have, and also change a couple of full subscriptions to single apps only. Has anyone done this sort of thing, and how did i
-
I have to double click for clicking, and cannot drag and select.
Hello Yesterday my mouse went out of batteries, and i put a fresh new ones in (have tried a lot new), nothing works. After that happened my mouse has been wierd. - I have to doubleclick to click. - When i select a text, it removes what i have selecte
-
Hi, Can anyone help me with a standard transaction with Tree control? where the columns in Tree control should be editable. Pls help Thanks in advance
-
Trying to install CS 6 Design and Web Premium Trial.
So upon trying to install the trial of this software (while I wait the 2 weeks for the box of it to be shipped to me) I receive an error code thing after having downloaded and installed it. It only installed ~50% of the programs (Fireworks, Dreamweav
-
Adobe reader crash continuosly iPad air
Why its happening When i editing a document?