Flash Builder & StageVideo
Hello everyone,
A major concern arises for me, and after several days of testing I can not find a solution.
I am currently developing a mobile application on Android to play a video locally.
For this I use the Adobe SimpleStageVideo class available on the website : http://www.adobe.com/devnet/flashplayer/articles/stage_video.html
At the launch all goes well , however when I switch to another application in full reading and then I go back to my video .
That passes over other elements of my interface (ie the navigation menu ) and especially it grows.
I tried to do a resize an event type activate ( to intercept the return on applicaiton )
I also tried to remove the container, and then reinject the video in my interface ( although this is costly in resources ... ) .
It did not work .
I think during my event "activate " the UIComponent has not yet been fully rebuilt, and thereby resize does not work on a good screen size used (since it does not blow conscidère menus ) .
To test my theory , I tested passing in debug mode. By running my code slower, the video goes back to the right size ...
So I tried to put timers, but again it was a futile attempt .
How is it possible when returning to my application that my video remains the right size , and not overlooking the rest of the menus?
Here follows the code in question :
// La Vue Permettant de Visionner la Vidéo
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:components="bouton.components.*"
xmlns:s="library://ns.adobe.com/flex/spark" title="viewVideo" activate="view1_activateHandler(event)" creationComplete="view1_creationCompleteHandler(event)" backgroundAlpha="0" actionBarVisible="false" tabBarVisible="false">
<fx:Script>
<![CDATA[
import flash.events.MouseEvent;
import mx.core.UIComponent;
import mx.events.FlexEvent;
import valueObjects.SimpleStageVideo;
private var conn:SQLConnection;
private var createStmt:SQLStatement;
public var dbFile:File;
public var fichierCharge:File;
public var numeroBouton:int = 0;
private var test:SimpleStageVideo = new SimpleStageVideo();
private var container:UIComponent = new UIComponent();
protected function view1_creationCompleteHandler(event:FlexEvent):void
var chemin:File = new File(data.url);
test.setData(chemin);
//container.stage = this.stage;
container.height = stage.height;
container.width = stage.width;
container.addChildAt(test, 0);
addElementAt(container, 0);
trace(""+container.width+" : "+container.height+" : "+container.x+" : "+container.y);
protected function view1_activateHandler(event:Event):void
test.resize();
private function resizeF(event:Event):void
test.resize();
]]>
</fx:Script>
<s:HGroup id="barremenu" gap="0" horizontalAlign="left" styleName="header_style" verticalAlign="top" width="100%" contentBackgroundColor="#FFFFFF" contentBackgroundAlpha="1" paddingBottom="50" >
<s:Image scaleMode="letterbox" smooth="true" smoothingQuality="high"
source="assets/header_droi.jpg" />
<components:Boutton_Retour click="boutton_retour1_clickHandler(event)" enabled="true" height="100%" contentBackgroundColor="#FFFFFF" contentBackgroundAlpha="1"/>
<components:Boutton_Accueil_Retour click="boutton_accueil1_clickHandler(event)" enabled="true" height="100%" contentBackgroundColor="#FFFFFF" contentBackgroundAlpha="1" />
<s:Image scaleMode="stretch" smooth="true" smoothingQuality="high"
source="assets/header_milieu.jpg" fillMode="repeat" width="60%" height="99%" />
<s:Image scaleMode="stretch" smooth="true" smoothingQuality="high"
source="assets/ipad.jpg" />
</s:HGroup>
</s:View>
// Ma Classe SimpleStageVideo
package valueObjects
import flash.display.Loader;
import flash.display.Shape;
import flash.display.Sprite;
import flash.display.Stage;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.NetStatusEvent;
import flash.events.StageVideoAvailabilityEvent;
import flash.events.StageVideoEvent;
import flash.events.VideoEvent;
import flash.filesystem.File;
import flash.geom.Rectangle;
import flash.media.StageVideo;
import flash.media.StageVideoAvailability;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import mx.core.UIComponent;
import spark.components.Image;
import spark.components.NavigatorContent;
[SWF(frameRate="1", backgroundColor="#000000")]
public class SimpleStageVideo extends Sprite
public var chemin:File;
private var FILE_NAME:String = "";
private static const INTERVAL:Number = 500;
private static const BORDER:Number = 20;
private var legend:TextField = new TextField();
private var sv:StageVideo;
private var nc:NetConnection;
private var ns:NetStream;
private var rc:Rectangle;
private var video:Video;
private var thumb:Shape;
private var interactiveThumb:Sprite;
private var totalTime:Number;
private var videoWidth:int;
private var videoHeight:int;
private var outputBuffer:String = new String();
private var rect:Rectangle = new Rectangle(0, 0, 0, BORDER);
private var videoRect:Rectangle = new Rectangle(0, 0, 0, 0);
private var gotStage:Boolean;
private var stageVideoInUse:Boolean;
private var classicVideoInUse:Boolean;
private var accelerationType:String;
private var infos:String = new String();
private var available:Boolean;
private var inited:Boolean;
private var played:Boolean;
private var container:Sprite;
private var displayButtonPause:Boolean;
public var imagePause:UIComponent;
public var pLoad:Loader;
private var testResize:Boolean = false;
private var widthStage:int = 0;
public function SimpleStageVideo()
// Make sure the app is visible and stage available
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
//addEventListener(Event.ACTIVATE, onActivate);
private function onActivate(event:Event):void
video.addEventListener(Event.RENDER, functionResize);
private function functionResize(event:Event):void
resize();
* @param event
private function onAddedToStage(event:Event):void
// Scaling
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
widthStage = stage.width;
// Thumb seek Bar
thumb = new Shape();
interactiveThumb = new Sprite();
interactiveThumb.addChild(thumb);
addChild(interactiveThumb);
// Connections
nc = new NetConnection();
nc.connect(null);
ns = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
ns.client = this;
// Screen
video = new Video();
video.smoothing = true;
// Video Events
// the StageVideoEvent.STAGE_VIDEO_STATE informs you if StageVideo is available or not
stage.addEventListener(StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY, onStageVideoState);
// in case of fallback to Video, we listen to the VideoEvent.RENDER_STATE event to handle resize properly and know about the acceleration mode running
video.addEventListener(VideoEvent.RENDER_STATE, videoStateChange);
// Input Events
stage.addEventListener(MouseEvent.DOUBLE_CLICK, onKeyDown);
stage.addEventListener(Event.RESIZE, onResize);
stage.addEventListener(MouseEvent.CLICK, onClick);
* @param event
private function onNetStatus(event:NetStatusEvent):void
if ( event.info == "NetStream.Play.StreamNotFound" )
legend.text = "Video file passed, not available!";
public function setData(chem:File):void
chemin = chem;
FILE_NAME = chemin.url;
* @param event
private function onFrame(event:Event):void
var ratio:Number = (ns.time / totalTime) * (widthStage+470);
rect.width = ratio;
thumb.graphics.clear();
thumb.graphics.beginFill(0xFF0000);
thumb.graphics.drawRect(rect.x, rect.y+350, rect.width+120, rect.height);
//thumb.graphics.drawRect(rect.x, rect.y, rect.width, rect.height);
//testResize = true;
* @param event
private function onClick(event:MouseEvent):void
//ns.pause();
if ( event.stageY >= interactiveThumb.y - BORDER && event.stageX <= stage.stageWidth - BORDER )
var seekTime:Number = (stage.mouseX - BORDER) * ( totalTime / (stage.stageWidth - (BORDER << 1) ) );
ns.seek( seekTime );
* @param event
private function onKeyDown(event:MouseEvent):void
ns.togglePause();
// Affichage du bouton d'affichage de la mise en pause de la video
if(displayButtonPause == false)
pLoad = new Loader();
pLoad.load(new URLRequest("assets/pause.png"));
//imagePause = new UIComponent();
//imagePause.addChild(pLoad);
//imagePause.x = 200;
//imagePause.y = 200;
pLoad.x = (stage.width - (stage.width/3.5));
pLoad.y = (stage.height - (stage.height/3.5));
addChild(pLoad);
displayButtonPause = true;
pLoad.visible = true;
} else
displayButtonPause = false;
pLoad.visible = false;
removeChild(pLoad);
* Permet l'arret de la video avant la supression de la vue
public function arretVideo():void
//video.clear();
//sv.attachNetStream(null);
ns.close();
//video.attachNetStream(null);
/*var nce:NetConnection = new NetConnection();
nce.connect(null);
sv.attachNetStream(new NetStream(nce));
//sv.attachNetStream();*/
* @param width
* @param height
* @return
private function getVideoRect(width:uint, height:uint):Rectangle
trace("Width" + width);
trace("Stage Width" + stage.stageWidth);
trace("Height" + height);
trace("Stage height" + stage.stageHeight);
var videoWidth:uint = width;
var videoHeight:uint = height;
var scaling:Number = Math.min ( stage.stageWidth / videoWidth, stage.stageHeight / videoHeight );
videoWidth *= scaling, videoHeight *= scaling;
var posX:uint = stage.stageWidth - videoWidth >> 1;
var posY:uint = stage.stageHeight - videoHeight >> 1;
videoRect.x = posX;
videoRect.y = posY;
videoRect.width = videoWidth;
videoRect.height = videoHeight;
trace("Objet video width" + video.width);
trace("Objet video height" + video.height);
trace("Objet video rect width" + videoRect.width);
trace("Objet video rect height" + videoRect.height);
return videoRect;
public function resize ():void
if ( stageVideoInUse )
// Get the Viewport viewable rectangle
rc = getVideoRect(sv.videoWidth, sv.videoHeight);
// set the StageVideo size using the viewPort property
sv.viewPort = rc;
} else
// Get the Viewport viewable rectangle
rc = getVideoRect(video.videoWidth, video.videoHeight);
// Set the Video object size
video.width = rc.width;
video.height = rc.height;
video.x = rc.x, video.y = rc.y;
//trace(""+rc.width+" : "+rc.height+" : "+rc.x+" : "+rc.y);
testResize = true;
interactiveThumb.x = BORDER, interactiveThumb.y = stage.stageHeight - (BORDER << 1);
legend.text = infos;
* @param evt
public function onMetaData ( evt:Object ):void
totalTime = evt.duration;
stage.addEventListener(Event.ENTER_FRAME, onFrame);
* @param event
private function onStageVideoState(event:StageVideoAvailabilityEvent):void
// Detect if StageVideo is available and decide what to do in toggleStageVideo
toggleStageVideo(available = inited = (event.availability == StageVideoAvailability.AVAILABLE));
* @param on
private function toggleStageVideo(on:Boolean):void
infos = "StageVideo Running (Direct path) : " + on + "\n";
// If we choose StageVideo we attach the NetStream to StageVideo
if (on)
stageVideoInUse = true;
if ( sv == null )
sv = stage.stageVideos[0];
sv.addEventListener(StageVideoEvent.RENDER_STATE, stageVideoStateChange);
sv.attachNetStream(ns);
if (classicVideoInUse)
// If we use StageVideo, we just remove from the display list the Video object to avoid covering the StageVideo object (always in the background)
stage.removeChild ( video );
classicVideoInUse = false;
} else
// Otherwise we attach it to a Video object
if (stageVideoInUse)
stageVideoInUse = false;
classicVideoInUse = true;
video.attachNetStream(ns);
stage.addChildAt(video, 0);
if ( !played )
played = true;
ns.play(FILE_NAME);
* @param event
private function onResize(event:Event):void
resize();
* @param event
private function stageVideoStateChange(event:StageVideoEvent):void
infos += "StageVideoEvent received\n";
infos += "Render State : " + event.status + "\n";
trace(infos);
resize();
* @param event
private function videoStateChange(event:VideoEvent):void
infos += "VideoEvent received\n";
infos += "Render State : " + event.status + "\n";
trace(infos);
resize();
Hi,
Don't know if this is an entirely valid answer as I write pure AS3 (no Flex).
I remember having problems about a year ago with the SimpleStageVideo when doing a video app that would work for both Apple and Android.
I couldn't get it to work as I wanted so I skipped SimpleStageVideo alltogether.
I ended up using this script to shift between StageVideo (iOS) and the usual videoPlayer (Android).
The stageVideo checks if a menu is open (on the left side) and draws the rect according to that.
The normal video gets it's size from the videoSprite which scales depending on the menu visibility.
Later when StageVideo became available for Android it still worked.
Hopefully it can help you get closer to a solution.
private function load_video():void{
if ( stage.stageVideos.length >= 1 ) {
stageVideo = stage.stageVideos[0];
try {
if(S.application.menu.toggleOpen == true){
stageVideo.viewPort = new Rectangle(S.device.scaledVideo.x, S.device.scaledVideo.y, S.device.scaledVideo.width, S.device.scaledVideo.height);
} else if(S.application.menu.toggleOpen == false){
stageVideo.viewPort = new Rectangle(S.device.video.x, S.device.video.y, S.device.video.width, S.device.video.height);
} catch(e:Error) {}
stageVideo.addEventListener(StageVideoEvent.RENDER_STATE, renderState);
stageVideo.attachNetStream(netStream);
} else {
try {
video = new Video(S.device.video.width, S.device.video.height);
video.smoothing = true
video.name = "video"
video.x = S.device.video.x
video.y = S.device.video.y
videoSprite.addChild(video);
video.attachNetStream(netStream);
} catch(e:Error) {}
netStream.play(S.path.video + S.application.xmlObjectArray[currentSlideIndex].video);
videoStarted = true
Similar Messages
-
Stage Video Using Flash Builder 4.51
Hi,
I am using Flash Builder 4.51, and I cannot get StageVideo to run. My machine is capable of playing StageVideo as I tested the Big Buck Bunny example and saw the change when flicking between StageVideo and normal Video.
Flash Builder shows that the build that I have is 4.5.1.313231. All the tutorial examples I have seen are built using Flex Hero build 18623 which I believe is earlier. So my question is was StageVideo removed somehow when Flash Builder 4.5 and 4.51 were released?
If it should work on 4.5.1, can anybody give me some tips on what to check or provide some minimal code and instructions to get the expression stage.stageVideos.length to be something different to 0?
I have changed made sure the wrapper uses wmode="direct", I am using version 11 of the Flash Player, I have a parameter on the compiler for " -swf-version=11".
When I export the swf from Flash Builder to my web page I still can't get StageVideo to work either locally or on the server.
I've run out of ideas with this one.
Any ideas?Hi Claudiu
I'm glad its working for you, that's encouraging.
I'm just trying to confirm that we are using the same setup. When you say you have installed the eclipse plugin, does that mean you install Flash Builder or are you using the Flex SDK through eclipse? I agree that FP11.2 is not the issue since StageVideo works if I run the Big Buck Bunny example.
Also, just to confirm we are talking about the same thing, if you create a new project in Flash Builder and put in the following two methods, are you able to get the "str" variable in the second method to show "Available". If so, what additional steps do you take after create project?
protected function application1_creationCompleteHandler(event:FlexEvent):void
this.systemManager.stage.addEventListener(StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILAB ILITY, onStageVideoState);
private function onStageVideoState(event:StageVideoAvailabilityEvent):void
var str:String = event.availability; -
What is new in Flash Builder 4.7 Game Development beta 2
I just installed it, I thought it would include some version of monocle.
Are there any changes other than a support for a product not available yet through labs?
If Not, when will we get monocle to test with it?In this build you can create SWFs that support profiling with Monocle, but you will need to download Monocle separately as it is not a part of Flash Builder.
The telemetry API usage via monocle is possible only with the AIR SDK 3.4, so out of the box AS3 projects would support creating SWFs that can be used with monocle. To make it work with MXML (or rather Flex) would will need to overlay the Flex 4.6 SDK with the AIR 3.4 runtime.
Thanks
Arijit -
Adobe creative cloud cc install has messed up my Flash Builder 4.6 serialization
Hello,
I have been a flash builder user for several years now. I have had FB 4.6 installed on my computer as a free upgrade from FB 4.5, which came with my copy of creative suite 5.5, which I purchased in 2011.
FB 4.6 has been working fine - even when I moved to adobe creative cloud last May (2012).
However, now that I have installed the new creative cloud (CC) applications (and uninstalled the creative cloud cs6 apps) - I am having problems with Flash Builder 4.6. I open it and get a message that my 'trial period' is up. Again, I own FB from my purchase of CS 5.5 - not to metion that it was included in creative cloud. I know that I can download FB 4.7 from creative cloud, but it doesn;t have the design view. So I want FB 4.6. I have seen some solutions to similar problems on the web that recommend reinstalling as a trial and then inputting the serial number once it launches. But I have FB 4.5 on my CS 5.5 installation disc - not FB 4.6 - and I'm not even sure how I could get FB 4.6 anymore. Not to mention that uninstalling - reinstalling 4.5 - and then upgrading from 4.5 to 4.6 - even if possible - would be a huge hassle.
Can someone please help me to get my FB 4.6 working again? To reiterate - everything was fine until I installed Creative Cloud CC apps and uninstalled Creative Cloud CS6 apps
ThanksHi bobba1,
I am experiencing the same problem. DId you ever get this solved?
Regards -
I am using Flash Builder 4.7 to build an Actionscript AIR project. The project embeds a number of png files from my local directory and I have been using absolute paths which all works fine.
I have a laptop with which I want to start developing the same project - I set up a git repository that both the laptop and main pc can pull from and so I can get the source where I need it and push it back to the central repository.
My problem is that the absolute paths for the embed commands don't work on the laptop as it has a different filesystem setup (Windows 8 with one drive as opposed to Windows 7 with a SSD and a data drive). I thought the solution would be as easy as using an environment variable to specify the path which could then point to a different physical directory on both machines, i.e:
[Embed(source = "DEVELOPER_RESOURCES/graphics/are/here.png"]
I did a bit of research and there was quite a lot mentioned about setting up resource directories using path variables which I worked through but I just can't get it to compile. The Actionscript compiler just won't find the png files however I specify the path. I tried something with a FLEX project and the compiler didn't complain but I think this is because the compiler for FLEX uses a different convention.
[Embed(source ="/Project Name/DEVELOPER_RESOURCES/graphics/are/here.png"] works with FLEX but not Actionscript.
So does anyone have a recipe for using the Embed command referencing assets using an environment variable that works across multiple machines with different file structures?I managed to find a solution on Windows which was to use symlinks and absolute paths. You an basically point one directory to another so I did something like:
mklink c:\developer_resources c:/the/local/path/to/my/resources
and then reference all resources as c:\developer_resources\...
Now as long as a developer machine has the right link (from c:\developer_resources to the place where the resources are kept) then it seems to work.
This doesn't however work for Mac and certainly isn't a solution for passing files between Mac and windows -
How do I update my Flash Debug Player for Flash Builder 4.6?
Hey how do I update my copy of Flash Builder 4.6 to the latest flash debug Player?
Go to flash player downloads and get the latest one for your browser.
http://www.adobe.com/support/flashplayer/downloads.html -
Having a problem with Flash Builder and Extension Builder - images not apearing on Mac system
Have a panel created in Flash Builder 4.5 with Extension Builder 2.1. Everything is fine when installed on a PC but when installed on a Mac the images in the panel do not show.
Mac and PC both using Adobe Photoshop CC . Both installed from same .ZXP file using Adobe Extension Manager CC.
Any ideas?No I used relative path - the path is images/image name
example images/cRight.png
tried downloading Extension Builder 2.1 and compiling on Mac but still have same results - images show up fine in design window , but not when running panel in Photoshop
Created a new project: testImage
added an image component to form
answered yes to add asset to project
ran project
image did not show up in Photoshop
went back to project
checked item Embed under Common image properties
ran project and image shows up
Looks like it works if I add @Embed("assets/image name") on Mac to display images
tried in my real project:
Looks like it works if I add @Embed("images/image name") on Mac to display images
When I change this on PC to @Embed("images/image name") images do not show Up
Don't know if I need to create two versions one for Mac one for PC
Don't know how this would affect product on Adobe Exchange -
Problem with working in Flash Builder 4
Hi there,
I am working on the develepment of a new kind of website in 3D.
For this I am using Flash Builder 4 AS3 Project and the 3D program Away3D.
The problem is that I created a SWF in one AS3 project called PoloSWF.
In another project I created a plane with the SWF as material.
For this I copied PoloSWF from the original bin release directory and pasted it in the assets folder of the plane project.
When running the plane project, the SWF is not visible.
Any idea where the bug is?I tried it in Internet Explorer, Firefox, and Chrome. I was able to get the Akamai download manager but that was all I could download. Currently with firefox the download is stuck at waiting and will not continue any further.
-
Is there a limit to the amount of SWCS I can use in my Flash Builder app?
I have 3 swc folders in my flash builder project that includes about 40 swcs total. Each swc is a simple flash animation with a size of about 500 kb each. When I include and complile about 20 of them in my project, things work fine.
When I try to include all my swcs, the app compiles, but when i make changes in my code and save those changes, each time the compile becomes slower and eventually my flash builder freezes at about 52%, gives me a "java heap error" message, and then crashes. After restarting FB, when I take out most of the swcs from the build, FB acts normal again. Attached is a screen shot of my error.
Is there a limit in size or amount of swcs that I can use in my FB application?There are no limits. But there is a known memory leak (which is being fixed for a later release).
Would it be possible to attach a sample SWC so that we can confirm whether this is a known leak or not? I'll take care of filing this in bugs.adobe.com.
Meanwhile, in your Flash Builder installation directory, you can edit FlashBuilder.ini to bump up max heap size by editing:
-Xmx512m
to
-Xmx800m -
How to connect my app interface with the code in flash builder?
I'm a beginner and learning my way around actionscript,mxml and flash builder.So this may seem foolish but please bear with me,I'm creating a very simple ios app using flash builder,I have created a simple app interface (A background and a custom navigation bar)using photoshop for my app,now the question is how do i import it into flash builder so that i can connect it with the code i have written? or is there another simpler way to create a app interface using other products like fireworks or catalyst?
In short, I want to know how is an app interface created(wt software) and how is it connected with its code using flash builder.Any help would be greatly appreciated, and tutorials would be swell
Thanks!Can you use stage.width or stage.stageWidth?
-
Unable to install Flash Builder Premium: a beta version exists on this computer
Hi,
I'm a user of Flex since version 2 and i'm still currently using it everyday. Some days ago I uninstall Flash Builder Premium 4.7 because i did a mess installing some external packages so I dedided to uninstall it and install everything from scratch.
The problem is that installing using Creating Cloud on my iMac, I always receive the same error: "a beta version exists on this computer".
I have already used the "Adobe Creative Suite Cleaner Tool" and I removed the "Adobe Flash Builder" having the same icon as the other applications installed by Creative Cloud and now I have another "Adobe Flash Builder" with a slightly different icon but I'm scared to use it because waiting to repair Flash Builder 4.7 I'm using Flash Builder 4.6 and I cannot think I cannot work because Flash Builder is not working (I use it every day !).
I removed Flash Builder 4.7 using the uninstaller, so the uninstalled didn't completed its job.
On the machine I have currently installed Flex Builder 3, Adobe Flash Builder 4.6, Adobe Gaming SDK 1.0 (no uninstaller for it !), Adobe Flash C++ Compiler (no uninstaller for it too!).
So, the question is, where I can find the log file containing the reason of the error message ? I have already checked the followimg folders:
\Library\Logs\Adobe\Installer: I cleaned the folder and the error happens before a file is created in this folder
\Users\<my account>\Library\Logs: it seems that the error isn't logged here
Please help me, I need to use Flash Builder 4.7 for a presentation I have to do next Wednsday (almost 2 years of working !!!)
Thank you
Diego NovatiHi novatiitm,
Please search for Flash Builder in Spotlight and if find simply uninstall it or delete the folders containing the software.
Regards,
Abhijit -
Dear all -
I am writing with the confidence that someone will be able to assist me.
I am using the Flash Builder Data Services Wizard to access a Server that utilizes REST type calls and returns JSON objects. The server is a JETTY server and it apparantly already works and is returning JSON objects (see below for example). It is both HTTP and HTTPS enabled, and right now it has a cross-domain policy file that is wide open (insecure but its not a production server, it's internal).
The crossdomain file looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-http-request-headers-from domain="*" headers="*" secure="false" />
<allow-access-from domain="*" to-ports="*" secure="false"/>
<site-control permitted-cross-domain-policies="master-only" />
</cross-domain-policy>
The crossdomain file is in the jetty server's root directory and is browseable via HTTP and HTTPS (i.e. browsing to it returns the xml)
Now before all of you say that using wizards sucks (generally) I thought I would utilize the FB Data Services Wizard as at least it would provide a template for which I could build additional code against, or replace and improve the code it produces.
With that in mind, I browse to the URL of the Jetty Server with any web browser (for example, Google Chrome, Firefox or IE) with a URL like this (the URL is a little confidential at the moment, but the structure is the same)
https://localhost:somePort/someKey/someUser/somePassword/someTask
*somePort is the SSL port like 8443
*someKey is a key to access the URL's set of services
returns a JSON object as a string in the web browser and it appears like the following:
{"result":success,"value":"whatEverTheValueShould"}
Looks like the JSON string/object is valid.
I went through the Flash Builder Data Services Wizard to set up HTTP access to this server. The information that I filled in is described below:
Do you want to use a Base URL as a prefix for all operation URLs?
YES
Base URL:
https://localhost:8443/someKey/
Name : someTask
Method : POST
Content-Type: application/x-www-form-urlencoded
URL : {someUser}/{somePassword}/someTask
Service Name: SampleRestapi
Services Package: services.SampleRestapi
datatype objects: valueObjects:
Completing the wizard, I run the Test Operation command. Remember, no authentication is needed to get a JSON string.
It returns:
InvocationTargetException: Unable to connect to the URL specified
I am thinking - okay, but the URL IS browseable (as I originally was able to browse to it, as noted above).
I continue to test the service by creating a Flex application that accepts a username and password in a form. when the form is submitted, the call to the service is invoked and an event handler returns the result. The code is below (with some minor changes to mask the actual source).
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:SampleRestapi="services.SampleRestapi.*"
minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
protected function button_clickHandler(event:MouseEvent):void
isUserValidResult.token = SampleRestAPI.isUserValid(userNameTextInput.text,passwordTextInput.text);
protected function SampleRestAPI_resultHandler(event:ResultEvent):void
// TODO Auto-generated method stub
// print out the results
txtAreaResults.text = event.result.message as String;
// txtAreaResults.appendText( "headers \n" + event.headers.toString() );
]]>
</fx:Script>
<fx:Declarations>
<SampleRestapi:SampleRestAPI id="SampleRestAPI"
fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)"
result="SampleRestAPI_resultHandler(event)"
showBusyCursor="true"/>
<s:CallResponder id="isUserValidResult"/>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Form defaultButton="{button}">
<s:FormItem label="UserName">
<s:TextInput id="userNameTextInput" text="q"/>
</s:FormItem>
<s:FormItem label="Password">
<s:TextInput id="passwordTextInput" text="q"/>
</s:FormItem>
<s:Button id="button" label="IsUserValid" click="button_clickHandler(event)"/>
<s:FormItem label="results:">
<s:TextArea id="txtAreaResults"/>
</s:FormItem>
</s:Form>
</s:Application>
It's a simple application to be sure. When I run it , I get the following returned in the text area field txtAreaResults:
An Internal Error Occured.
Which is equivalent to the following JSON string being returned:
{"success":false,"value":"An Internal Error Occured"}
It appears that the call is being made, and that a JSON object is being returned... however it does not return the expected results?
Again the URL constructed is the same:
https://www.somedomain.com:somePort/someKey/someUser/somePassword/someTask
So I am wondering what the issue could be:
1) is it the fact that I am browsing the test application from an insecure (http://) web page containing the Flex application and it is accessing a service through https:// ?
2) is the JSON string structurally correct? (it appears so).
3) There is a certificate enabled for HTTPs. it does not match the test site I am using ( the cert is for www.somedomain.com but I am using localhost for testing). Would that be an issue? Google Chrome and IE just asks me to proceed anyway, which I say "yes".
Any help or assistance on this would be appreciated.
thanks
EdwardHello everyone -
Since I last posted an interesting update happened. I tested my Flex application again, it is calling a Jetty Server that returns a JSON object, in different BROWSERS. I disabled HTTPS for now, and the crossdomain.xml policy file is wide open for testing (ie. allowing every request to return data). So the app accessing the data using HTTP only. Browsers - IE, Opera, Firefox and Chrome. Each browser contained the SAME application, revision of the Flash Player (10.3.183.10 debugger for firefox, chrome, opera, safari PC; 11.0.1.129 consumer version in IE9,) take a look at the screen shot (safari not shown although the result was the same as IE and chrome)
Note that Opera and Firefox returned successful values (i.e. successful JSON objects) using the same code generated from the Data Services Wizard. Chrome, IE and, Safari failed with an Internal error. So I am left wondering - WHY? Is it something with the Flash Player? the Browsers? the Flex SDK? Any thoughts are appreciated. Again, the code is found in the original thread above. -
How can I get to the compiler arguments in Flash Builder 4.6?
Howdy!
So far I've been unable to locate any information that could help me with my task. The ultimate goal is to build my project's SWF with mxmlc. I was not able to figure it out and thought I'd install Flash Builder in the hopes of being able to get to the compiler arguments. No luck.
First, I'm not the lead on the building of the SWF. This is done by another person via the Eclipse plugin; her hard drive crashed last night too. In fact I'm not a Flash developer. I'm coming at this from a Build Infrastructure perspective.
Any help would be greatly appreciated.
Cheers,
Mel RiffeMel Riffe,
Here's a Help topic about compiler options in Flash Builder: http://help.adobe.com/en_US/flashbuilder/using/WSe4e4b720da9dedb524b8220812e5611f28f-7fe7. html
For information on using mxmlc, the application compiler, to compile SWF files from your ActionScript and MXML source files, you can see: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7fcc.html
Hope this helps,
Mallika Yelandur
Flash Builder Community Help & Learning
Adobe Systems Incorporated -
Launch flash builder from flash cs5 don't work
hi
I have a trial version of flash builder (eclipse plug-in) and registered flash cs5 pro
I'm trying to open a new AS3 class like in this tutorial: http://tv.adobe.com/watch/learn-flash-professional-cs5/using-flash-pro-and-flash-builder-t ogether/
and it doesn't work.
at first it did asked if I want to edit the file in flash builder or not, and it didnt work.
now it won't even ask.
what can I do?
and also I cant open a flash proffessional project in flash builder, it says "This feature requires Adobe Flash CS5 or higher to be installed."
but it is installed!
frustrated...I gave this a shot, using CS5, and when I started a new AS3 file I got the appropriate prompt asking me which application should edit my file...
Flash Pro
Flash Builder
When I chose Flash Builder, (which I had already running), it opened the new AS3 file there with no problems. Interestingly, when I closed FB, and with Flash Pro created a new AS3 class, I wasn't prompted (and the AS file opened in Flash Pro) - so it does require that FB be running, or else Flash Pro will be the default editor.
For the issue of Flash no longer prompting you "Who" will open a new file, you can change that here:
Edit > Preferences > ActionScript > Several items down is the Class editor. Change that to Flash Builder
If you still have problems...Are you able to successfully launch Flash Builder 4 by itself? Or has the trial expired?
Last but not least, it's worth mentioning another fantastic AS editor (in case you don't really need FB, and/or your trial runs out):
http://www.flashdevelop.org/wikidocs/index.php?title=Main_Page -
How to use the Google Android Emulator in Flash Builder on Windows 7?
I want to try out Flash Builder to create an app, but I cannot find out how to use the Google Android Emulator in Flash Builder. The simulators in Flash Builder work, and the android emulator is installed correctly and can run. I just can't seem to connect them. How do I do that?
Hi Pahup,
Thank you for your reply!!
I adapted an Android App using Flash CC on a Mac. I already published this App for the Apple App Store. When I published the App for Android I chose Air 3.7.xxx for Android. I also created the p12 certificate using Flash CC in the publishing settigns for Android. So my App is theoretically finished and ready for Upload.
When I went to the Google Play Store Developer Console I had the options to
1.) Upload APK
or
2.) Prepare Store Entry
...so I prepared the Store entry first. When I go to "APK"-Tab in the console it looks like this:
... it says "Upload APK" and the Button below "Get Licence Key". When I click on the license Key Button it looks like this:
So I think I should enter this RSA-Key somehow into my App BEFORE uploading it to the Google Play Store. This is recommended when an Ap is set to be paid. My Application is set to paid.
I did not use any kind of licensing API (until now - cause I don´t know how and what it is for)
This is all new to me. It is the first App I want to bringt to the Android market. I really hoped it would be as easy as getting an app into the Apple App Store. I found so many step by step instructions for dummies on "How to get an Flash iOS App into the App Store plus creating all the certificates needed", so I thought it would be the same for Android. But there is no help at all at the moment. I am totally confused.
So any help, hint or instrusction would be great!!
By the way - this is the App I want to get into the Google Play Store
Maybe you are looking for
-
External Hard-Drive not showing in Finder despite no errors in Disk Utility.
I have tried to follow certain steps as described in this community but I am at a loss on next steps here. I have a wester digital that I have used for Time MAchne which all of a sudden does not appear on Finder. I have run Disk Utility and I can s
-
Images printing too small using Lightroom
I have an image that is 316x x 2317 pixels that I am printing using Lightroom 2.3 on Windows XP SP2. I use the Picture Package and add one 4x6 image to the sheet. I am using the Maximize template from the browser. The photo borders are minimum. The i
-
What is the DC in board?
Does this stand for anything? I think it's the plug in the computer where the cord goes... Before I order a new one, as I think mine has turned into Hal, I was hoping someone could explain to me what it is, what it stands for, etc. Thanks!
-
Export / Import with FULL=Y
Hello DBA's, after consulting several thread on exp/imp with the option full=y the doubt that I have left is when using imp with full=y ignore=y in a new data base, the data base obtained will be equal to the data base from which export with full=y b
-
ORA-01791: not a SELECTed expression
How can i fix this error? Any help is apprecaited.. SQL> create table test(no number,no1 number); Table created. SQL> insert into test values(1,1); 1 row created. SQL> select distinct no,no1 2 from test order by no1; NO NO1 1 1 SQL> SELECT distinct n