Flex :: Listening To Events In Javascript Without Using External Interface?
Jul 6, 2011I need to register events in flex and listen to them in java script. Is there any way other than using external interface.
View 1 RepliesI need to register events in flex and listen to them in java script. Is there any way other than using external interface.
View 1 RepliesI'm trying to get javascript to talk to flash, but I haven't been able to get it to work.I've gotten flash to talk to javascript, but not the other way around. It seems as thought flash isn't listening to the javascript, or I'm doing something wrongPart of the AS3 to initially call the js:
ExternalInterface.call("showGal", slastSelectedNumber);
The js i'm trying to use is:
function showGal(dPicture) {
document.getElementById('fullsizegallery').style.display = 'block';
document.getElementById("flashGalleryContent").someFunctionName(dPicture);
[code].....
I am working on a simple project involving flex 4 and Mate framework. When I am including Mate event map in fx:declarations tag in mxml file, and when I fire up an event, Mate event handlers listen to events and act upon it.
The issue is this, in action script based project, when I instantiate the eventmap class(this is in mxml file only) and keep it in top and fireup an event, instantiated eventmap is not listening to event fired up from action script class.
I've got a class like this:
class Foo extends UIComponent {
var someDispatcher:*;
...
}
And I want to listen for events fired by someDispatcher... But, of course, someDispatcher may not be bound until "later":
<components:Foo someDispatcher="{someOtherComponent}" />
What's the best way to listen for events from someDispatcher?I know I could bind to someDispatcher, then wire up the event handlers when it's updated... Or I could use getters/setters...
I've got a class like this:
class Foo extends UIComponent {
var someDispatcher:*;
...
[code].....
Several months ago for a project at work i developed a video player using flash, external interface and swfobject.js. I used external interface to facilitate communication between javascript and actionscript. This works great. Currently I am working on an extension to this that requires me to extrapolate logic from what i already written. I am using the same swf file in both applications, but in the extension i can't get the flash object to recognize my calls. Since i am using the same swf object i know that my problem is in the javascript, i just don't know where. I am using the JQuery Library. Without further adieu here's my code.
[Code]...
I have a flash player with an external javascript interface: reloadData() I'm calling that function via Javascript when editing information on the page - basically to keep data on the page and in the player in synch. The reloadData() function works fine when the player is hosted locally. When we move it to the CDN (Amazon Cloudfront), the player loads successfully, but the external javascript interface no longer works - console.log(player) reveals the following:
<object type=,"application/x-shockwave-flash" data="[our_cloudfront_url].swf" width="920" height="404" id="player" style="visibility:visible;">
Uncaught TypeError: Object #<an HTMLObjectElement> has no method 'reloadData'
I know there are a lot of things that behave differently when working with items on a CDN, but we're using a CNAME to point to the cloudfront distribution
(buildid.ourdomain.net => distributionid.cloudfront.net)
We have a flash game embedded in a web page (using SWFObject v2.2) and there are some links on the page that call into the flash in the following manner:
window.document["flashObjectId"].flashMethod();
This has worked great on all browsers we have tried including IE7 and 8, however on IE9 it generates the following error: "SCRIPT438: Object doesn't support this property or method".
It does work in compatibility mode so I tried adding a meta tag to tell IE9 to use compatibility mode by default, however that didn't work because our game runs in an IFrame within Facebook.
I have tried referencing the flash object every way I could think of in the Javascript but I always get that same error message in IE9.
I will call flashObject.httpRequest to complete a http request via flash. The problem is there is no reference about httpRequest is an async method or sync. It is important for my application.
private function httpRequest (uri:String, param:String="", method:String="GET"):void
{
var
[Code]....
Is there a non-polling way for Javascript to command Flash right when its external interface is ready? In Actionscript, I've registered a function for Javascript to call:[code]SWFObject lets you run code when Flash has been successfully embedded through a callback. I attempt to run $ ('flash Player'). doStuff in this callback, but it claims it's undefined. It seems that Flash needs some time to boot up its external interface. So I've been using a polling hack to find out when the external interface is ready:[code]There's a visually perceptible delay in the execution of doStuff and it makes my overall code structure muddy.
View 1 RepliesI need to call a function in JS that's expecting a JSON object. Can I do this from External Interface? The company's example (after the include file url) in HTML looks like this:
//there's an js include URL earlier//
Shopwithme.Initialize({
"id":"prod1234",
[code]...
But, I need to dictate these vars through Flash. How do I call this function using External Interface?This is my EI code, but I'm obviously off base, since it's not working:
ExternalInterface.call("Shopwithme.Initialize",[{ "id":"prod1234",
"type":"2","URL":"http://www.somelink.com"}]);
What do I need to do to call this javascript?
I am looking for a simple and straightfoward example of how I can pass the value of a variable into flash using javascript.Specifically, I'd like to use javascript to pass the filename of an external video file that I would like to load into my flash movie.I'd also like to call a function in the SWF that plays the movie once the filename as been passed to the flash movie.External Inferface looks like the way to goI've found a few decent AS2.0 examples, but converting them to AS3.0 has proven difficult and many of the examples are much too complex for what I am trying to do.
View 4 RepliesI'm hitting a brick wall here, and it's driving me mad. Used to use ExternalInterface to call Flash functions from Javascript all the time, and now under CS5 (and the way it uses object id's instead of embed in html) it's stopped working for me in certain browsers. I put together a really simple program that has the person click a link in the browser that activates a javascript function that simply sends some text in to Flash to display in a TextArea. Here's the as3 code:
[Code]....
I want to have a main logic class that listens for dispatched events from an assortment of other classes.
for instance: i have a parent Map class that contains X instances of a State class. When the user clicks on a State class, i want to dispatch an event CLICKED along with the name of the state.
now this Logic class will see this new event and process the name of the state and perform some other logic stuff. no matter what i try i can only get it to work where the State class listens for its own Dispatched event. Which to me seems a waste, i could have just manually called the function.
I have read so many tutorials online about custom events/ dispatching and they are being used in a basic one class example.
what the most efficient method is for listening for events up and down a string of parents and children? Example:
(these are parents from left to right) Main Sprite -> Child A -> Child B -> Child C
Child C fires and Event - what's the best way to have Main Sprite listen for it?
1) Make Child B and C "public" so Main Sprite can attach a listener all the way down on C (_childA._childB._childC.addEventListener)
2) Child C's event triggers a Child B event that triggers a Child A event that Main Sprite listens for
I have the Main class that imports my urlValidator class.My urlValidator class imports com.usual.swfaddress and thanks to the SWFAdressEvent fires the function dealing with the validation of the url.In some other class myMenu (child of the Main but on the other branch) I need to listen for the event of validation being completed.I'm importing myEvent (custom event) class to urlValidator and when the validation is complete I'm triggering the dispatchEvent.At the same time I'm importing the myEvent to myMenu class and trying to listen when the myEvent was dispatched (from urlValidator).
View 2 RepliesBasically I've build a small class that can be imported anywhere in the program and one of it's public methods dispatch a listener, which as I understand can be received anywhere. Is that correct? In my project I've got a menu which slides in and out. It's movement can be triggered mainly bu the buttons on the menu, but I also want to be able to controll it's movement from various places in the program. So i.e. it can slide in or out when something completely unrelated has been clicked. So I've got a class "SlidingPanel" and one of its children is class "SlidingPanelNavigation". SlidingPanelNavigation uses the class that only dispatches the Event, which should be listened in class "SlidingPanel" and the problem is - it doesn't.
My main class that holds the whole menu together:
Code:
package com.zeeto.menu {
import flash.display.MovieClip;
import flash.events.Event;
public class SlidingPanel extends MovieClip {
private var navigation :SlidingPanelNavigation;
[Code] .....
Why the SlidingPanel.slideMenu() isn't fired?
I am making a game that uses MVC pattern. The game.swf is loaded into main.swf. I want to dispatch a gameOver event from the Model Class of the game.swf and have the main.swf(parent) listen for it but I can't get it to work.
I have game.swf dispatching events fine amongst itself just fine but I can't get the parent to hear anything.
I tried this in the main.swf
Code: Select allvar loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
function gameOver(e:Event):void
{
[Code].....
I'm creating an AIR application that loads a child SWF. The child needs to read keyboard input (for a game), which I usually do by adding a keyboard event listener to the stage property, like this: stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp)
However, the child SWF is apparently not allowed to access the stage property because the parent SWF owns the stage, so I get a security sandbox violation. So I need to do one of two things:
Bypass the security restriction allowing AIR to load SWFs that have an absolute path (local path), and allow that child to access the stage, orGet keyboard events to be heard by some display object other than the stage, without ever calling "stage" (this includes stage.focus).A few things I have tried already: Security.allowDomain() does not work. AIR thows an error saying that allowDomain doesn't work in the AIR sandbox. Also, adding the keyboard listener to the child's document class (then clicking inside the SWF) doesn't work.
Here's my code: [URL]
I'm using Flash Develop.
The trace command never gets executed. Why?
I have a menu movieclip and an externally loaded swf on my main stage. The menu mc needs to control the externally loaded swf. For example the swf plays and pauses, then when any of the menu buttons are clicked the swf needs to play thru and be removed. currently I am dispatching an event for each button clicked with a switch statement. In the main timeline I need to listen for each of theses events and based on what button is clicked proceed to the correct content frame. How can I listen for different events and run one function that based on which event is registered perform a task with a switch or if statement?
View 4 Replies`i'have a problem with listening events dispatching from their child classes. for example i have contentManager object which is controlling content at the top level of stage. it has a imageGallery object and in the imageGallery objectthere ise a collectionLoader object which is loading images.
now i want to add one preloader to contentManager which always listen for ProgressEvent. when the progressEvent dispatched i want to preloader going to active. becouse there is another objects that are loading images or other kind of files. i think it is a good apporach to solve preloader issue. so my problem is, when collectionLoader object loading images with using queLoader. my QueueProgress event dispatches ProgressEvent evey time, but my preloader object stand at the 2 classes up level, doesn't percive this event.
I'm creating a swf, that has a parent class and a child class. The parent class has a button, that dispatches a custom event and I want the child class to list for this event, but when I dispatch the event the child class does not hear the event has been dispatched.[code]The register EventListeners() function is in the child class.I know events can bubble up the display list but how can then go down the list?
View 1 RepliesI am designing a music player using JavaScript (jQuery) and HTML5, with Flash AS3 to fall back. Basically what I want to do is to be able to click HTML control elements and have them interact with the flash in order to play/pause and skip tracks in the playlist (playlist JSON file read by JavaScript, passes file ID to AS3, AS3 reads another JSON file to get URL, then plays audio)
This enables me to only use the Flash to play the audio, thus creating the same user experience regardless of HTML5 browser support. I'm assuming I will have to 'listen' for events in AS3, however any pointers in how to engage these events in JS and react to the events in AS3
ActionScript Code:
package com.ui.base {
import flash.display.MovieClip;
import flash.events.*;
import com.ui.interfaces.InStated;
import com.ui.interfaces.InSized;
class BaseMC implements InStated, InSized {
The response:
1045: Interface InStated was not found.
1045: Interface InSized was not found.
There are many tutes on the web on how to make interface elements, such as drop down menus, or accordion menus. The example Menu Class includes all the event listeners and functions. It invariably ends with the CLICK event function tracing some comment so you know it works. But no information on how to implement the Menu Class. So say you have a Main Document Class that instantiates a Menu Class. How can you pass the CLICK event back to the Main Document Class to do something with it? As far as I can see, the Menu Class can build the menu but all the listeners and functions for it have to reside in the Main Document Class. Or do you have to build a custom Class that extends the Event Class?
View 3 RepliesI am using the following script to animate a navigation button, but am getting this Compiler error message: The class or interface 'flash.events.MouseEvent' could not be loaded.
nav01_mc.buttonMode = true;
nav02_mc.buttonMode = true;
nav03_mc.buttonMode = true;
nav04_mc.buttonMode = true;
[Code].....
I have a main application Planner.mxml. This view has a couple of custom components, one of which is LoginView.mxml. In LoginView.mxml I do the following:
protected function btnLoginClick(event:MouseEvent):void
{
try
{
[code]....
As you can see, when the user is successfully logged in, I want to dispatch a custom event; if not, I show an alert box. However, this event doesn't dispatch (or at least, I don't know how to listen for it).
I would like to listen for it in my main application where I can then change my viewstate to the logged-in state. However, the event never seems to get there. I listen for it by having loggedIn="loggedInHandler(event)" on my loginComponent.
I currently have an over, out and click event for 8 different objects. The over and out events are identical for each (tween expands object and then shrinks it back for the out state).I have previously asked for an easy way to declare those events, and now I was looking for an easier way to handle them.
Here's my code:
//-----------GARAGE
function growGarage(e:MouseEvent):void{
scaleTweenX = new Tween(map_garage, "scaleX", Elastic.easeOut, 0.648, 1, 0.5, true);
[code]....
I've tried using a single function and then using "this" as the object of the tween but that expanded the entire stage.
I'm new to Flex and am having trouble understanding Events. I think Events are what I want to use for my situation. I have 2 components, addUser.mxml and listUsers.mxml. I access these from a ViewStack in my main application. When I load listUsers.mxml it shows a list of current users in a datagrid via a HTTPService call. When I add a user using the form on addUser.mxml I would like the datagrid in listUsers.mxml to refresh when I return to that view to show the new user. I've tried several different things with addEventListener and dispatchEvent but can't seem to get it working. Can someone help me with this logic?
[Code]...