Hi Henry,

I've installed the latest Nightly Build now (8232). I've had the version
8057 before. But the flickering is still there.
I run the application with lzr=dhtml in Firefox (version 2.0.0.12) on
Microsoft Windows XP Professional.

When you click a few times (5-10 times) on the next and previous buttons,
you'll sometimes see in the upper left corner of the black view that the
loaded image is firstly visible in small (100%) for a very short time before
it is shown in the desired zooming size (200%) in the middle of the black
view.

Best Regards,
Marc

-----Ursprüngliche Nachricht-----
Von: Henry Minsky [mailto:[EMAIL PROTECTED] 
Gesendet: Donnerstag, 13. März 2008 13:55
An: [EMAIL PROTECTED]
Cc: [email protected]
Betreff: Re: [Laszlo-user] Flickering on onload of View

Which version of Openlaszlo are you using? I don't see any flickering when I
run it in the "top of tree" dev branch. Have you tried a  recent nightly
build ? Perhaps some issue has been fixed with image display recently?

Note, I had to modify your example to set visible to true on the image
views, otherwise it remained false, since it appears no other code was
setting it to visible.



On Thu, Mar 13, 2008 at 7:29 AM, Marc Bachstein <[EMAIL PROTECTED]>
wrote:
> Hello,
>
>  I have written an application in which you can switch the image by 
> clicking  on a navigation button. It is also possible to zoom into the 
> image. When you  switch to another image the zoom factor keeps at the same
value.
>
>  Now there is a problem. If the zoom factor is different from 1, the 
> image is  firstly visible in 100% and after a subsecond the image is 
> shown in the  desired zoom setting. This causes a weird flickering as 
> the image is painted  twice.
>
>  As there is just one call of   newImgView.setSource(imgUrl, "none")
>  I wanted to know whether this is bug in Laszlo and how I can avoid 
> the  double painting of the image.
>
>  Here is a test program, which demonstrates the problem.
>
>  When you click a few times on the next and previous button, you'll
>  (sometimes) see the loaded image in the upper left corner visible in 
> 100%  before it is shown in the desired zooming size (here 200%).
>
>  Best Regards,
>  Marc
>
>  -------------------
>
>  <canvas height="100%" width="100%">
>         <library>
>                 <class name="MyImage" extends="view">
>                         <attribute name="active" type="boolean"
>  value="false"/>
>
>                         <handler name="onload"><![CDATA[
>                 show();
>                     ]]>
>                 </handler>
>
>                         <method name="show"><![CDATA[
>                     this.animate('opacity', 1, 100);
>                     ]]>
>                 </method>
>
>                 <method name="hide"><![CDATA[
>                     this.animate('opacity', 0, 100);
>                     ]]>
>                 </method>
>                 </class>
>         </library>
>
>         <attribute name="currentIndex" value="1" type="number"/>
>
>         <simplelayout axis="y" spacing="5" inset="100"/>
>
>         <!-- This box contains the buttons for image navigation -->
>         <view name="functionBox" width="450" x="120" y="0" height="45"
>                 bgcolor="#CCCCCC" options="ignorelayout" align="center">
>                 <simplelayout axis="x" spacing="5" inset="5"/>
>
>                 <!-- Button first/initial Image -->
>                 <button name="tbbfirst" text="first/init" y="3"
width="100"
>  height="30">
>                         <handler name="onclick"><![CDATA[
>                                 canvas.currentIndex = 1;
>                                 canvas.loadImage();
>                         ]]>
>                         </handler>
>                 </button>
>
>                 <!-- Button previous Image -->
>                 <button name="tbbprev" text="previous" y="3" width="100"
>  height="30">
>                         <handler name="onclick"><![CDATA[
>                                 if (canvas.currentIndex > 1) {
>                                         canvas.currentIndex--;
>                                         canvas.loadImage();
>                                 }
>                         ]]>
>                         </handler>
>                 </button>
>
>                 <!-- Button next Image -->
>                 <button name="tbbnext" text="next" y="3" width="100"
>  height="30">
>                         <handler name="onclick"><![CDATA[
>                                 if (canvas.currentIndex < 8) {
>                                         canvas.currentIndex++;
>                                         canvas.loadImage();
>                                 }
>                         ]]>
>                         </handler>
>                 </button>
>
>                 <!-- Text field, which shows Image number -->
>                 <text name ="textfield" id="tf" text="image nr:
undefined">
>                 </text>
>         </view>
>
>         <view name="imagecontainer" x="${parent.width - this.width}"
>  width="1000" height="830" bgcolor="#000000">
>         <MyImage name="image1" id="image1" stretches="both"
>                 x="${parent.width / 2 - this.width / 2}"
>                         y="${parent.height / 2 - this.height / 2}"
>  visible="false" opacity="0">
>
>                 <handler name="onload">
>                         // image zooming
>                         image1.setWidth(2 * image1.resourcewidth);
>                                 image1.setHeight( 2*
image1.resourceheight);
>                         image1.active = true;
>                         image2.active = false;
>                         image1.bringToFront();
>                         image2.unload();
>                 </handler>
>                 </MyImage>
>
>                 <MyImage name="image2" id="image2" stretches="both"
>                         x="${parent.width / 2 - this.width / 2}"
>                         y="${parent.height / 2 - this.height / 2}"
>  visible="false" opacity="0">
>
>                 <handler name="onload">
>                         // image zooming
>                         image2.setWidth(2 * image2.resourcewidth);
>                                 image2.setHeight( 2*
image2.resourceheight);
>                         image2.active = true;
>                                 image1.active = false;
>                                 image2.bringToFront();
>                                 image1.unload();
>                 </handler>
>                 </MyImage>
>         </view>
>
>         <method name="loadImage"><![CDATA[
>                         var curImgView;
>                 var newImgView;
>
>                 if (imagecontainer.image1.active) {
>                         Debug.write("     => paint new image in view
>  image2");
>                         curImgView = imagecontainer.image1;
>                         newImgView = imagecontainer.image2;
>                 } else {
>                         Debug.write("     => paint new image in view
>  image1");
>                         curImgView = imagecontainer.image2;
>                         newImgView = imagecontainer.image1;
>                 }
>
>                 var d = new Date();
>                         var t = d.getDate() + "-" + (d.getMonth()+1) + 
> "-" +
>  d.getFullYear() + "_" + d.getHours()
>                         + ":" + d.getMinutes() + ":" + d.getSeconds() +
"."
>  + d.getMilliseconds();
>
>
>                 //actualize text of image nr
>                 tf.setText("image nr: "+canvas.currentIndex);
>
>                         // sources must be set !
>                         if (this.currentIndex == 1) {
>                                 var imgUrl =  
> "http://www.openlaszlo.org/themes/manji/images/ol_logo_small.gif";;
>                         } else if (this.currentIndex == 2) {
>                                 var imgUrl =  
> "http://www.openlaszlo.org/files/ol_java_bot.png";;
>                         } else if (this.currentIndex == 3) {
>                                 var imgUrl =  
> "http://www.openlaszlo.org/files/lsl_action-small.jpg";;
>                         } else if (this.currentIndex == 4) {
>                                 var imgUrl =  
> "http://www.openlaszlo.org/themes/manji/images/ol_logo_small.gif";;
>                         } else if (this.currentIndex == 5) {
>                                 var imgUrl =  
> "http://www.openlaszlo.org/files/ol_java_bot.png";;
>                         } else if (this.currentIndex == 6) {
>                                 var imgUrl =  
> "http://www.openlaszlo.org/files/lsl_action-small.jpg";;
>                         } else if (this.currentIndex == 7) {
>                                 var imgUrl =  
> "http://www.openlaszlo.org/themes/manji/images/ol_logo_small.gif";;
>                         } else if (this.currentIndex == 8) {
>                                 var imgUrl =  
> "http://www.openlaszlo.org/files/ol_java_bot.png";;
>                         }
>
>                         newImgView.unload();
>
>                         newImgView.setSource(imgUrl, "none");
>
>                         Debug.write("   load Image URL:
>  "+imgUrl.toString());
>                 ]]>
>         </method>
>  </canvas>
>
>  -------------------
>
>
>



--
Henry Minsky
Software Architect
[EMAIL PROTECTED]




Reply via email to