can you simulate your problem in someway and post the code..

i am much more efficient in fixing the problem when i see one .. :)

regards,
Varun Shetty

On Wed, Mar 5, 2008 at 1:57 PM, Brian <[EMAIL PROTECTED]> wrote:

>   Hi, thanks for your reply. What is the importance of ending the effect?
>
> I tried creating a canvas outside the main canvas, and putting the
> iris effects on that canvas. It didn't appear to make a difference.
>
> I put the loop in to _simulate_ the work that my app is doing in the
> middle of the sequence, which I thought was the cause of the delay in
> the 2nd effect. I'm using the startDelay property.
>
> When I use the startDelay property, it almost works. However, during
> the pause between the effects, the canvas is drawn onto the screen
> when the updates are done, and then the 2nd effect runs. I thought
> that setting autoLayout = false was supposed to prevent this.
>
> How can I update that canvas and not have it drawn on the screen?
>
>
> --- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>, "Varun
> Shetty" <[EMAIL PROTECTED]> wrote:
> >
> > heya ...
> >
> >
> > well couple of things i did..
> > cleaned ur code.. 'cause i dont like it with warnings on my flex ..
> :D (u
> > dont have to do it)
> > created a canvas outside the map.. since u are doing too many things
> on the
> > map canvas . i would recommend keeping it separate from the iris
> effect..
> > also you need to end your effects effectively.
> > i would never recommend putting a for loop to simulate a delay. there is
> > startDelay property to make a delay.
> >
> > check the script below .. mebbe it solves ur problem.
> >
> >
> >
> > <?xml version="1.0" encoding="utf-8"?>
> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> > layout="absolute" creationComplete="initApp()">
> > <mx:Script>
> > <![CDATA[
> > import mx.events.EffectEvent;
> > import mx.controls.Button;
> >
> > private function initApp():void {
> > irisHideCanvas.addEventListener(EffectEvent.EFFECT_END,
> > handleIrisEnd);
> > irisShowCanvas.addEventListener(EffectEvent.EFFECT_START,
> > handleIrisStart);
> > irisShowCanvas.addEventListener(EffectEvent.EFFECT_END,
> resetAll);
> > }
> >
> > private function addImages():void {
> > for(var i:int = 0; i<50; i++) {
> > var button:Button = new Button();
> > button.label = "Button " + i;
> > button.x = getIntBetween(0, map.width);
> > button.y = getIntBetween(0, map.height);
> > map.addChild(button);
> > }
> > }
> > private function resetAll(event:EffectEvent):void {
> > irisHideCanvas.end();
> > irisShowCanvas.end();
> > }
> > private function clearAndNew():void {
> > irisHideCanvas.end();
> > irisShowCanvas.end();
> > irisHideCanvas.play();
> > }
> > private function handleIrisStart(event:EffectEvent):void {
> > map.visible = true;
> > }
> > // try to clear all the map's children AFTER the irisHideCanvas
> > //effect is done
> > private function handleIrisEnd(event:EffectEvent):void {
> > map.removeAllChildren();
> > map.visible = false;
> > addImages();
> > irisShowCanvas.play();
> > }
> >
> > // returns an int 0 <= result < top
> > private function nextInt(top:int):int {
> > var temp:int = Math.round(Math.random()*1000);
> > return temp % top;
> > }
> >
> > private function getIntBetween(bottom:int, top:int):int {
> > if(bottom >= top) {
> > return bottom;
> > } else {
> > return bottom + nextInt(10000) % (1+top-bottom);
> > }
> > }
> >
> > ]]>
> > </mx:Script>
> > <mx:Iris id="irisHideCanvas" duration="1000" showTarget="false"
> > target="{outerCanvas}" />
> > <mx:Iris id="irisShowCanvas" startDelay="500" duration="1000"
> > showTarget="true" target="{outerCanvas}"/>
> > <mx:Canvas id="outerCanvas">
> >
> > <mx:Canvas id="map" x="10" y="10" width="360" height="201"
> > backgroundColor="#000000" visible="{cb1.selected}"
> > >
> >
> > </mx:Canvas>
> > </mx:Canvas>
> > <mx:Button x="58" y="219" label="Add Images" click="addImages()"/>
> > <mx:Button x="160" y="219" label="Clear Images" click="clearAndNew()"/>
> > <mx:CheckBox id="cb1" x="266" y="221" label="visible" selected="true"/>
> >
> > </mx:Application>
> >
> > On Mon, Mar 3, 2008 at 12:36 PM, Brian <[EMAIL PROTECTED]> wrote:
> >
> > > I posted this last Friday. I'm bumping to try to get you smart
> people
> > > to take another look at this, earlier in the week; hope that's ok.
> > >
> > >
> > > --- In flexcoders@yahoogroups.com 
> > > <flexcoders%40yahoogroups.com><flexcoders%40yahoogroups.com>,
>
> "Brian"
> > > <briforge@> wrote:
> > > >
> > > > I'm trying to get a sequence of Iris effects working. I think
> I'm this
> > > > '' close but just have one bug I can't squash. I made the following
> > > > example to post here to show what I'm doing, but unfortunately it's
> > > > not reproducing the error.
> > > >
> > > > What I've got is a Canvas full of objects. At a certain point, I
> want
> > > > to wipe (not the effect) the canvas clean, and then re-populate it
> > > > with a few new objects. I'm doing a sequence of Iris effects to hide
> > > > the canvas, then do the processing of removing objects and
> adding new
> > > > ones, then use the iris effect to re-show the canvas.
> > > >
> > > > The bug is, there is a delay on the iris effect when showing the
> > > > canvas. It often re-appears about halfway done, instead of the
> smooth
> > > > hide-and-show in this example. I thought the event handling of the
> > > > handleIrisHideEnd with the pause and resume would have taken care of
> > > > this, but it acts as if there is no pause, and the
> removing-and-adding
> > > > of canvas objects is happening at the same as the 2nd iris effect.
> > > >
> > > > Any ideas?
> > > >
> > > > Thanks
> > > >
> > > > <?xml version="1.0" encoding="utf-8"?>
> > > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> > > > layout="absolute" creationComplete="initApp()">
> > > > <mx:Script>
> > > > <![CDATA[
> > > > import mx.events.EffectEvent;
> > > > import mx.controls.Button;
> > > >
> > > > function initApp() {
> > > > irisHideCanvas.addEventListener(EffectEvent.EFFECT_END,
> > > > handleIrisEnd);
> > > > }
> > > >
> > > > function addImages() {
> > > > for(var i:int = 0; i<5; i++) {
> > > > var button:Button = new Button();
> > > > button.label = "Button " + i;
> > > > button.x = getIntBetween(0, map.width);
> > > > button.y = getIntBetween(0, map.height);
> > > > map.addChild(button);
> > > > }
> > > > }
> > > >
> > > > function clearAndNew() {
> > > > irisSequence.play();
> > > > }
> > > >
> > > > // try to clear all the map's children AFTER the irisHideCanvas
> > > > effect is done
> > > > function handleIrisEnd(event:EffectEvent) {
> > > > irisSequence.pause();
> > > > map.removeAllChildren();
> > > > for(var i:int = 0; i < 100000; i++) {
> > > > // trying to simulate long processing
> > > > }
> > > > addImages();
> > > > irisSequence.resume();
> > > > }
> > > >
> > > > // returns an int 0 <= result < top
> > > > function nextInt(top:int):int {
> > > > var temp:int = Math.round(Math.random()*1000);
> > > > return temp % top;
> > > > }
> > > >
> > > > function getIntBetween(bottom:int, top:int):int {
> > > > if(bottom >= top) {
> > > > return bottom;
> > > > } else {
> > > > return bottom + nextInt(10000) % (1+top-bottom);
> > > > }
> > > > }
> > > >
> > > > ]]>
> > > > </mx:Script>
> > > > <mx:Sequence id="irisSequence">
> > > > <mx:Iris id="irisHideCanvas" duration="1000" showTarget="false"
> > > > target="{map}"/>
> > > > <mx:Iris id="irisShowCanvas" duration="1000" showTarget="true"
> > > > target="{map}"/>
> > > > </mx:Sequence>
> > > >
> > > > <mx:Canvas id="map" x="10" y="10" width="360" height="201"
> > > > backgroundColor="#000000" visible="{cb1.selected}"
> > > > showEffect="{irisShowCanvas}" hideEffect="{irisHideCanvas}" >
> > > > </mx:Canvas>
> > > > <mx:Button x="58" y="219" label="Add Images" click="addImages()"/>
> > > > <mx:Button x="160" y="219" label="Clear Images"
> click="clearAndNew()"/>
> > > > <mx:CheckBox id="cb1" x="266" y="221" label="visible"
> selected="true"/>
> > > >
> > > > </mx:Application>
> > > >
> > >
> > >
> > >
> >
>
>  
>

Reply via email to