<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
      http://www.apache.org/licenses/LICENSE-2.0
    	  
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
  
-->
<canvas height="400" debug="true">
    
    <include href="lz/button.lzx" />
 
    <simplelayout axis="y" spacing="10" />

    <text name="myText" opacity="0.0" bgcolor="#CCCCCC">The Invisible Man</text>
     
     
    <edittext >
        <attribute name="timerDelegate" value="null"/>
        <attribute name="typetime" type="number" value="2000"/>
        <attribute name="timerIsInited" value="false" type="boolean"/>
     
        <handler name="onvalue">
            //Debug.write("onvalue");
            if (!this.timerIsInited){
                this.timerIsInited = true;
                canvas.myText.setAttribute( "opacity", 1.0 );
                this.timerDelegate = new LzDelegate( this, "fadeText" );
                //Debug.write("+++++++++++++++++ addTimer");
                lz.Timer.addTimer( this.timerDelegate, this.typetime );
            } else {
                //Debug.write("############### resetTimer NO ADDING ");
                lz.Timer.resetTimer( this.timerDelegate, this.typetime );
            }
        </handler>
     
        <method name="fadeText">
            this.timerIsInited = false;
            //Debug.write("fadeText ");
            canvas.myText.animate( "opacity", 0.0, 1000 );
        </method>
    </edittext>
    
    
 
 </canvas>
