Skinning with ActionScript

Hi everyone,
im looking for good Skinning examples in Actionscript for mobile projects. Adobe recommends to do skinning for this purpose only in actionscript but most of the examples on this website and most of the code in the provided example flex mobile apps are in MXML.
Are their anywhere more examples and/or tutorials besides (http://www.adobe.com/devnet/flex/articles/mobile-skinning-part1.html) about skinning, or do you know good blogs about this topic?
Beside that i have the problem that i cant import "spark.skins.mobile.*;"  in my project, because its a libary project. It only works in a mobile project, how can i fix this?
Regards,
Christoph

I caught your sarcasm, but not your point...
My apologies. Points are better understood when in your own head.
My point was that MXML skins are used for the same reason we are not all still programming in assembler (except of course in those instances where it makes to use assembly, such as embeded systems). Yes, it is slightly less efficient to use a declarative language like MXML for skinning than it would be to write a highly optimized version in Actionscript (or assembler, if you want to follow that same logic).
However, in most cases the preformance impact is negligable compared to the advantage gained through rapid development and easy work flows between designers and engineers. As long as the preformance loss is not noticble to the end user, who cares if it is slightly less efficient? Since the preformance loss IS somewhat noticable on mobile devices, then perhaps a different strategy that takes longer to implement could be justified. Although, it is possible to use MXML in a way that is pretty damned efficient... after all, it's nothing more than a factory pattern applied at compile time...

Similar Messages

  • SWF movie export on frame-by-frame basis WITH actionscript

    Hi there,
    I know they're two ways of exporting flash movies:
    Export the whole timeline. This only allows timeline animations and gets messy because you have to cram up everything on the main timeline.
    Realtime-Export via Quicktime. This is a "full blown" export, but heavily dependent on CPU power or speed of harddrive, depending on resolution.
    I also work a lot with music programs and there is an option called "mixdown". This will render the whole song - as fast as the processor is capable - to a WAV-file. So time doesn't matter anymore, notes don't get skipped, etc.
    I would like to see something like this in flash, too. WITH actionscript.
    I just want flash to export one frame for each "onEnterFrame" event, NOT when the timer tells you, it's time for a "next frame". So this would mean not to trigger the onEnterEvent when the appropiate time has passed, but to trigger it, when the next frame can be exported.
    Libraries like "TweenLite/Max" are capable of doing frame-based animations, independent from the timer, so everything on that end is pretty fine.
    Would be so great if that was possible in any way.
    Is it already in CS5? Or maybe an option in CS6... argh, so many years to wait...
    until then, I have to measure the fps, look out for the lowest number, export at THAT framerate (in most of the cases just 4 or 5 fps, even on a very fast computer - just because 2 or 3 frames happen to render slower than the other 200) and afterwarts set it to 25 again (I use Blender to do this)

    Greg-
    Good Lead - Thanks.
    I learned that having skinned components (which this uses)
    keeps this preloader from working properly. The results were
    unstable. It looks like a great little preloader for other things
    though.
    I also learned that it's a problem that others have
    encountered and that hasnt been solved yet...
    ...."hello Adobe?"
    Thanks again for helping me understand this.
    JL

  • Flex 4 Migration: skinning, and Actionscript

    Hello,
    I've been researching about this topic, but I wasn't able to find any  examples on "how to skin in flex4" using actionscript. I'm trying to  make a simple test, just load an image inside a container and set the  borderSides properties. This property, and many others, are missing from  flex 4 "by default", now I have to create/define a skin and code it  using Line graphics components, is that correct?
    anyways, my "real" (probably not the smartest but...) I've been struggling around  this problem for a couple days:
       - How do I migrate from Flex 3 (css styles and other stuff) to Flex 4 (skins), BUT I don't want to use mxml files, I'd like to keep everything written in actionscript in my application. It has to be feasible but I couldn't figure out how.
    Thanks in advance
    Renan

    Thanks for the help, we managed to do a skin in actionscript.
    Can you help me with two other issues, I'm still not comfortable with this Flex4 transition:
    Is it possible to load/add an image to a group from the container (in actionscritpt), or you can only do that using skins?
    Can I inherit skins like other classes? For instance: I have a skin to draw borders and another to draw an image, can I extend it to "merge" these two behaviors, border+image.
    Thanks
    renan

  • Modify Flvplayback skin with counter problem

    Hi
    I am trying to customise a FLVPlayback Skin that has a counter in it, (MinimaFlatCustomColorPlayBackSeekCounterVolMute.fla)
    If i modify any of the skins without a counter there is no problem however when i try to publish one of the skins with a counter i get these compiler errors:
    Warning: unable to load SWC FLVPlaybackAS2.swc
    1046 type was not found or was not compile time constant: NetstreamPlayOptions
    Any ideas?
    cheers
    Grant

    Hi,
    Someone had found a workaround
    "Just remove all from your source paths in the publish settings when  you look to ActionScript 3.0 setting for your Skin FLA ! ( as default  you can see here some path to video folder where is SWC files)"
    but the counter prolem remains as the counter does not work in this case ...
    may be someone has a better solution can reply ...
    Cheers

  • Want to add an image but with actionscript not a s:Image

    hi. i've looked for a good answer but can't seem to find one...i have a few images i want to add to my app at run time and don't want to use a whole lot of <mx:Image> components...just want to do it with actionscript. i get to the point where i've got an Image object and embedded the source of the Image object but don't know how to add the Image to the display list? thx

    on the same issue...i'd like to use some of the functions of the Sprite class....so i've got my image and added that to a Sprite object but can't seem to add the Sprite to any of the spark/mx containers...keep getting this error:
    Main Thread (Suspended: Error: addChild() is not available in this class. Instead, use addElement() or modify the skin, if you have one.)
    spark.components.supportClasses::SkinnableComponent/addChild
    play/init
    play___play_Application1_creationComplete
    flash.events::EventDispatcher/dispatchEventFunction [no source]
    flash.events::EventDispatcher/dispatchEvent [no source]
    mx.core::UIComponent/dispatchEvent
    mx.core::UIComponent/set initialized
    mx.managers::LayoutManager/doPhasedInstantiation
    mx.managers::LayoutManager/doPhasedInstantiationCallback

  • Can't access object using "id" or "name" if created with actionscript

    How can you register an instance of an object with actionscript so that it's id or name value is accessible?
    I included a simple example where a Button is created using mxml and in the same way it is created using actionscript.  The actionscript object is inaccessible using it's "id" and "name" property.
    <?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" minWidth="955" minHeight="600"
                   creationComplete="application1_creationCompleteHandler(event)">
        <fx:Script>
            <![CDATA[
                import mx.events.FlexEvent;
                protected function application1_creationCompleteHandler(event:FlexEvent):void
                    import spark.components.Button;
                    var asBtn:Button = new Button();
                    asBtn.label = "actionscript";
                    asBtn.x = 200;
                    asBtn.id = "asButton";
                    asBtn.name = "asButtonName";
                    addElement(asBtn);
                    trace("mxmlButton="+this["mxmlButton"].label); // returns: mxml  label
                    //trace("mxmlButton="+this["asButton"].label); // returns runtime error: ReferenceError: Error #1069: Property asButton not found on TestId and there is no default value.
                    //trace("mxmlButton="+this["asButtonName"].label); // returns runtime error: ReferenceError: Error #1069: Property asButtonName not found on TestId and there is no default value.
            ]]>
        </fx:Script>
        <s:Button
            id="mxmlButton"
            label="mxml label"
            alpha="0.8"/>
    </s:Application>

    Hi Dan,
    It is a very rare occurrence when I miss not being able to access an object (object property, really) using the ["name"] notation for objects created using actionscript.
    In MXML the compiler is conveniently adding an attribute to the class with the same name as the id, so you can conveniently refer to it using the [] notation. While we explicitly specify an application container to use, the MXML compiler creates a custom container which is a derivative of the base container and to that it adds properties for the children declared in MXML. I guess it also effectively calls "addElement" for us when  the container is being constructed.
    Your example assumes that using "addElement" to add the button to the application container is the same as declaring a variable (ie property ). It isn't, so there's no point in looking for an property of the name "as3Button" using the [] notation, because it doesn't exist. The container is managing a collection of children in it's display list and that's not the same as being accessible as properties of the container.
    Generally speaking, accessing properties using the ["name"] syntax isn't necessary.
    Paul
    [edit: you may wonder why "addElement" doesn't conveniently also add the "id" attribute to be an property of the container class. Unfortunately, it can't because the container class would need to be dynamic and it's not. A further complication would be that adding properties at runtime would invite naming clashes at runtime with associated mayhem. MXML can do this because the compiler generates the class and can trap name duplication at compile time.
    Great question, BTW.
    -last edit changed my "attributes" to be "properties" in line with Adobe's terminology]

  • How can I use LCCS with ActionScript 3 and Flash CS4?

    Hi,
    Using Stratus I was able to create an an application using Action Script 3 and Flash CS4.  The sample code on the Adobe site was quite straight forward and easy to understand.  I now want to switch over to  LCCS but can't find anything any where on how to use Action Script 3 and Flash CS4 with LCCS.  Do I need to know Flex to be able to use LCCS?  Everything was quite simple and easy to understand with Stratus and makes complete sense.  But LCCS is really confusing.  Is there any sample code on how to establish a connection in Action Script 3 and then stream from a webcam to a client.  There is nothing in the  LCCS SDK that covers Flash and Action Script 3.  Please help!  I found the link below on some forum but it takes me nowhere.
    http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=72&catid=75 9&threadid=1407833&enterthread=y

    Thanks Arun!
    Date: Thu, 29 Apr 2010 11:44:10 -0600
    From: [email protected]
    To: [email protected]
    Subject: How can I use LCCS with ActionScript 3 and Flash CS4?
    Hi,
    Welcome to the LCCS world.
    Please refer to the SDK's sampleApps folder. There would be an app called FlashUserList. The app demonstrates how LCCS can be used with Flash CS4. Its a  pretty basic app, but should help you moving.
    We are trying to improve our efforts to help developers in understanding our samples. Please do let us know if we can add something that would help others.
    Thanks
    Arun
    >

  • Stop and Play All Child MovieClips in Flash with Actionscript 3.0

    I am stuck with the ActionScript here. I have a very complex animated flash movie for eLearning. These contain around 10 to 15 frames. In each frame I am having multiple movie clip symbols. The animation has been created using a blend of scripting and also normal flash animation.
    Now I want to create pause and play functionality for the entire movie. I was able to create the pause function but when i try to play the movie it behaves very strange.
    I was able to develop the pause functionality by refering to the below mentioned links:
    http://www.unfocus.com/2009/12/07/stop-all-child-movieclips-in-flash-with-actionscript-3-0 /
    http://www.curiousfind.com/blog/174
    Any help in this regard is highly appreciated as i am approaching a deadline.
    I am pasting the code below:
    import flash.display.MovieClip;
    import flash.display.DisplayObjectContainer;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import fl.transitions.*;
    import fl.transitions.Tween;
    import fl.transitions.easing.*;
    import fl.transitions.TweenEvent;
    import flash.events.Event;
    import flash.events.MouseEvent;
    stop();
    // function to stop all movieclips
    function stopAll(content:DisplayObjectContainer):void
        if (content is MovieClip)
            (content as MovieClip).stop();
        if (content.numChildren)
            var child:DisplayObjectContainer;
            for (var i:int, n:int = content.numChildren; i < n; ++i)
                if (content.getChildAt(i) is DisplayObjectContainer)
                    child = content.getChildAt(i) as DisplayObjectContainer;
                    if (child.numChildren)
                        stopAll(child);
                    else if (child is MovieClip)
                        (child as MovieClip).stop();
    // function to play all movieclips
    function playAll(content:DisplayObjectContainer):void
        if (content is MovieClip)
            var movieClip:MovieClip = content as MovieClip;
            if (movieClip.currentFrame < movieClip.totalFrames) // if the main timeline has reached the end, don't play it
       movieClip.gotoAndPlay(currentFrame);
        if (content.numChildren)
            var child:DisplayObjectContainer;
            var n:int = content.numChildren;
            for (var i:int = 0; i < n; i++)
                if (content.getChildAt(i) is DisplayObjectContainer)
                    child = content.getChildAt(i) as DisplayObjectContainer;
                    if (child.numChildren)
                        playAll(child);
                    else if (child is MovieClip)
                        var childMovieClip:MovieClip = child as MovieClip;
                        if (childMovieClip.currentFrame < childMovieClip.totalFrames)
          //childMovieClip.play();
          childMovieClip.play();
    function resetMovieClip(movieClip:MovieClip):MovieClip
        var sourceClass:Class = movieClip.constructor;
        var resetMovieClip:MovieClip = new sourceClass();
        return resetMovieClip;
    pauseBtn.addEventListener(MouseEvent.CLICK, onClickStop_1);
    function onClickStop_1(evt:MouseEvent):void
    MovieClip(root).stopAll(this);
    myTimer.stop();
    playBtn.addEventListener(MouseEvent.CLICK, onClickPlay_1);
    function onClickPlay_1(evt:MouseEvent):void
    MovieClip(root).playAll(this);
    myTimer.start();
    Other code which helps in animating the movie and other functionalities are as pasted below:
    stage.addEventListener(Event.RESIZE, mascot);
    function mascot():void {
    // Defining variables
    var mc1:MovieClip = this.mascotAni;
    var sw:Number = stage.stageWidth;
    var sh:Number = stage.stageHeight;
    // resizing movieclip
    mc1.width = sw/3;
    mc1.height = sh/3;
    // positioning mc
    mc1.x = (stage.stageWidth/2)-(mc1.width/2);
    mc1.y = (stage.stageHeight/2)-(mc1.height/2);
    // keeps the mc1 proportional
    mc1.scaleX <= mc1.scaleY ? (mc1.scaleX = mc1.scaleY) : (mc1.scaleY = mc1.scaleX);
    stage.removeEventListener(Event.RESIZE, mascot);
    mascot();
    this.mascotAni.y = 100;
    function mascotReset():void
    // Defining variables
    var mc1:MovieClip = this.mascotAni;
    stage.removeEventListener(Event.RESIZE, mascot);
    mc1.width = 113.45;
    mc1.height = 153.85;
    mc1.x = (stage.stageWidth/2)-(mc1.width/2);
    mc1.y = (stage.stageHeight/2)-(mc1.height/2);
    // keeps the mc1 proportional
    mc1.scaleX <= mc1.scaleY ? (mc1.scaleX = mc1.scaleY) : (mc1.scaleY = mc1.scaleX);
    var interval:int;
    var myTimer:Timer;
    // function to pause timeline
    function pauseClips(secs:int, myClip:MovieClip):void
    interval = secs;
    myTimer = new Timer(interval*1000,0);
    myTimer.addEventListener(TimerEvent.TIMER, goNextFrm);
    myTimer.start();
    function goNextFrm(evt:TimerEvent):void
      myTimer.reset();
      myClip.nextFrame();
      myTimer.removeEventListener(TimerEvent.TIMER, goNextFrm);
    // function to pause timeline on a particular label
    function pauseClipsLabel(secs:int, myClip:MovieClip, myLabel:String):void
    interval = secs;
    myTimer = new Timer(interval*1000,0);
    myTimer.addEventListener(TimerEvent.TIMER, goNextFrm);
    myTimer.start();
    function goNextFrm(evt:TimerEvent):void
      myClip.gotoAndStop(myLabel);
      myTimer.removeEventListener(TimerEvent.TIMER, goNextFrm);
    MovieClip(root).pauseClips(4.5, this);
    // function to fade clips
    function fadeClips(target_mc:MovieClip, next_mc:MovieClip, from:Number, to:Number):void
    var fadeTW:Tween = new Tween(target_mc, "alpha", Strong.easeInOut, from, to, 0.5, true);
    fadeTW.addEventListener(TweenEvent.MOTION_FINISH, fadeFinish);
    function fadeFinish(evt:TweenEvent):void
      next_mc.nextFrame();
      fadeTW.removeEventListener(TweenEvent.MOTION_FINISH, fadeFinish);
    // function to fade clips with speed
    function fadeClipsSpeed(target_mc:MovieClip, next_mc:MovieClip, from:Number, to:Number, speed:int):void
    var fadeTW:Tween = new Tween(target_mc, "alpha", Strong.easeInOut, from, to, speed, true);
    fadeTW.addEventListener(TweenEvent.MOTION_FINISH, fadeFinish);
    function fadeFinish(evt:TweenEvent):void
      next_mc.nextFrame();
      fadeTW.removeEventListener(TweenEvent.MOTION_FINISH, fadeFinish);
    // function to show screen transitions
    function screenFx(target_mc:MovieClip, next_mc:MovieClip):void
    //var tweenTW:Tween = new Tween(target_mc,"alpha",Strong.easeInOut,0,1,1.2,true);
    var tranFx:TransitionManager = new TransitionManager(target_mc);
    tranFx.startTransition({type:Iris, direction:Transition.OUT, duration:1.2, easing:Strong.easeOut, startPoint:5, shape:Iris.CIRCLE});
    tranFx.addEventListener("allTransitionsOutDone",doneTrans);
    function doneTrans(evt:Event):void
      next_mc.nextFrame();
      tranFx.removeEventListener("allTransitionsOutDone",doneTrans);
    // function to show screen transitions inverse
    function screenFxInv(target_mc:MovieClip, next_mc:MovieClip):void
    var tweenTW:Tween = new Tween(target_mc,"alpha",Strong.easeInOut,0,1,1.2,true);
    var tranFx:TransitionManager = new TransitionManager(target_mc);
    tranFx.startTransition({type:Iris, direction:Transition.IN, duration:2, easing:Strong.easeOut, startPoint:5, shape:Iris.SQUARE});
    tranFx.addEventListener("allTransitionsInDone",doneTrans);
    function doneTrans(evt:Event):void
      next_mc.nextFrame();
      tranFx.removeEventListener("allTransitionsInDone",doneTrans);
    // function to zoom in
    function zoomFx(target_mc:MovieClip):void
    //var tweenTW:Tween = new Tween(target_mc,"alpha",Strong.easeInOut,0,1,1.2,true);
    var tranFx:TransitionManager = new TransitionManager(target_mc);
    tranFx.startTransition({type:Zoom, direction:Transition.IN, duration:3, easing:Strong.easeOut});
    //tranFx.addEventListener("allTransitionsInDone",doneTrans);
    /*function doneTrans(evt:Event):void
      next_mc.nextFrame();
    // Blinds Fx
    function wipeFx(target_mc:MovieClip):void
    var tranFx:TransitionManager = new TransitionManager(target_mc);
    tranFx.startTransition({type:Wipe, direction:Transition.IN, duration:3, easing:Strong.easeOut, startPoint:9});
    // Blinds Fx Center
    function fadePixelFx(target_mc:MovieClip):void
    var tranFx:TransitionManager = new TransitionManager(target_mc);
    tranFx.startTransition({type:Fade, direction:Transition.IN, duration:1, easing:Strong.easeOut});
    tranFx.startTransition({type:PixelDissolve, direction:Transition.IN, duration:1, easing:Strong.easeOut, xSections:100, ySections:100});

    This movie is an animated movie from the start to end. I mean to say that though it stops at certain keyframes in the timeline it stops for only a certain time and then moves on to the next animation sequence.
    Its not an application where the user can interact.
    On clicking the play button i want the movie to play normally as it was playing before. If the user has not clicked on the pause button it would anyhow play from start to finish.
    Is there anyway where i could send in the fla file?

  • Is there a way to open a local file not a web file with actionscript 3.0?

    Reason for asking is because I am making a media player in Adobe Flash CS6, and was wondering if there was anyway to make a button to open a local .fla file in a directory with ActionScript 3.0 or if there are any other ways I can achieve this?
    Thanks Casey

    with an air app, check the file class.  otherwise, check the filereference class.

  • Change the "Font size" in a TLF Textfield with actionscript?

    I could not realize how should I resize my TLF Textfiels in flash cs6 with actionscript??
    None of these worked:
    if (....)
         myTLFText.textSize++;
         myTLFText.fontSize++;
    Error: Access of possibly undefined property size through a reference with static type fl.text:TLFTextField.
    I appreciate your kind help please??

    Here is the part of code I am using to resize the textfield (and other elements).
    /******SET POSITION**********/
    function setPosition():void
          //Position appBG
          appBG.height = stage.stageHeight;
          appBG.width = appBG.height;
          //Fit the appTXT in middle of screen  (AppTXT is a MovieClip contains sourceText - RTLTextField)
          appTXT.sourceText.width = stage.stageWidth * 0.9;
          appTXT.sourceText.x = stage.stageWidth * 0.05;
          appTXT.sourceText.y = stage.stageHeight * 0.1;
          //Fit the maskText layer on top of text;
          maskText.width = appTXT.sourceText.width;
          maskText.height = stage.stageHeight * 0.8;
          maskText.x = stage.stageWidth * 0.05;
          maskText.y = stage.stageHeight * 0.1;
          //Set buttons in their proper position
          if (stage.stageWidth > stage.stageHeight)
                appBG.width = stage.stageWidth;
                appBG.height = appBG.width;
          appBG.x = stage.stageWidth / 2;
          appBG.y = stage.stageHeight / 2;
    Everything works fine, but when I install the apk on my Google nexus (800x1280), the font size looks VERY SMALL and I can hardly read it!
    If I increase the Font size pt (Red Arrow in above PrntScr) to 40. then it reads perfect on phones with 800x1280 screen size. Ok?  But then any OTHER smaller screen cell phones will see the font TOO BIG!
    So I need to set the Font size pt by CODE based on a percent of stageWidth to could solve this. thx.

  • Animating a button with actionScript

    I'm fairly stumped on this one - but probably quite simple to fix.
    I need to animate the scale of a button with actionScript 2.0. I've inherited a project that was done with actionScript 2.0 and have decided to stay with this generation rather than rewrite the whole project. Anyway - I've created a sound object, it plays audio from the library and 3 seconds after it starts playing, I want to animate the "next" button and make it pulse to attract the users attention.
    Doing this by putting the button in a movie clip is not working as I am losing it's button states and besides it's probably far more tighter to program it.
    When the user rolls over the button it stops pulsing but still retains it's up, over and down states.
    Any easy answer?

    Thanks for your help Ned.
    I ended up making an advanced button with movie clips and using programming for all the states.
    Movies are so much easier to control than buttons.
    But you have raised something I had overlooked...setTimeout( )
    I was using setInterval( ) and then doing clearInterval( ) within the function so it would only loop once, which of course was problematic if the user beat the 'clearInterval' code by clicking on the button too early.
    Actually used setInterval( ) to delay all sound on the project - now going to re-program all that.
    Thanks

  • Sound recorder with ActionScript

    Is it possible to build a sound recorder
    with ActionScript? I know that you can
    do it with a Flash Media Server. But that
    requires a steam and a server.
    I just want a simple recorder/player so
    that a user could test and adjust the
    settings of his/her microphone by visiting
    a web page. A user should be able to do
    it without any server resounces, since the
    sound card/microphone/audio are already on
    his/her desktop.
    I'd appreciate any suggestions, with or
    without ActionScript.

    AFIAK not possible without a media server. But you can use
    the open source media server "red5". Its free and can do everything
    (at least thats what the developers say) the Flash Media Server can
    do.

  • I'm trying to isolate skin with a secondary layer and am successful.  I want to blur the skin to reduce blemishes but when doing so the blur and degrain sliders don't seem to have an effect. Can I apply a gaussian blur fx on just that secondary? Can't see

    I'm trying to isolate skin with a secondary layer and am successful.  I want to blur the skin to reduce blemishes but when doing so the blur and degrain sliders don't seem to have an effect. Can I apply a gaussian blur fx on just that secondary? Can't seem to figure this out.  Is there a better way to smooth skin?

    Here's an Adobe help page for isolating skin with suggestion on the use of the blur slider also:
    https://helpx.adobe.com/speedgrade/using/apply-secondary-color-corrections.html
    And here's one of the original creators of Iridas/SpeedGrade, Patrick Palmer, a six minute vid-tut on using secondaries (specifically in CS6 but this hasn't changed):
    http://tv.adobe.com/watch/learn-speedgrade-cs6/secondary-color-correction-in-speedgrade-cs 6/
    I'd note, the "blur" and "denoise" tools on the Secondary tab are more about smoothing the keying of the secondary ... they apply a bit of blur or de-noising to make the secondary smoother and cover over the odd pixel or three or four that don't "fit" the key of the secondary in the middle of something you're aiming for.
    In current SpeedGrade, I'd try using the Guassian Blur (Range) effect, and sample a good range of the skin tones.
    And a lot of people use Red Giant's "Cosmo" plug-in over in AfterEffects or Premiere Pro ... it's a tool designed specifically for working skin tones, dealing with blemishes, wrinkles, spots, and such.
    Neil

  • Stateful skins with custom states

    Hi, i'm desperately trying to create a stateful skins with
    custom states defined in my component.
    However, all stateful skins examples i've found so far use
    built-in flex statex, mostly from buttons, to accomplish this.
    when i define my own states, the ProgrammaticSkin class
    doesn't seem to know about my custom states.
    Has anyone a hint how to do this ?
    thanks!

    "pulse00" <[email protected]> wrote in
    message
    news:gmaoou$bta$[email protected]..
    > Hi, i'm desperately trying to create a stateful skins
    with custom states
    > defined in my component.
    >
    > However, all stateful skins examples i've found so far
    use built-in flex
    > statex, mostly from buttons, to accomplish this.
    >
    > when i define my own states, the ProgrammaticSkin class
    doesn't seem to
    > know
    > about my custom states.
    >
    > Has anyone a hint how to do this ?
    What are you wanting to apply the skins to that knows how to
    get the state
    information into your skin?

  • Is it possible to add paragraphs with actionscript?

    If I have an object like
    <s:RichText id="foo">
    <s:content></s:content>
    </s:RichText>
    Can I manually add paragraphs to it with actionscript?
    I want to manually create a new paragraph, assign a string to it, and then stash it in the RichText object.  So I can use a loop to create as many paragraphs as I might need.
    Such as
    for each (s:String in myCollection) {
       [ foo add a p element with s in it ]

    I think I've got it:
    var textFlow:TextFlow = new TextFlow();
    for each ( var s:String in instructionsArray)
         var p:ParagraphElement = new ParagraphElement();
         var span:SpanElement = new SpanElement();
         span.text = s;
         p.replaceChildren(0, 0, span);
         textFlow.replaceChildren(textFlow.numChildren, textFlow.numChildren, p);
    instructionText.content = textFlow;
    Where "instructionText" is a RichText object.
    This is very, very cool, btw.

Maybe you are looking for