<?xml version="1.0"?>
<!--

  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.

-->
<!-- Simple example to demonstrate the Halo Parallel effect. -->
<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">

    <fx:Declarations>
       <mx:Parallel id="expand" target="{img}">
            <mx:Move xTo="{canvas.width/2 - 50}" yTo="{canvas.height/2 - 100}"/>
            <mx:Resize widthTo="100" heightTo="200"/>
        </mx:Parallel>

        <mx:Parallel id="contract" target="{img}">
            <mx:Move xTo="20" yTo="20"/>
            <mx:Resize widthTo="30" heightTo="60"/>
        </mx:Parallel>
    </fx:Declarations>

    <s:Panel title="Halo Parallel Effect Example" width="100%" height="100%">
        <s:VGroup bottom="10" right="10" top="10" left="10">
			<s:Label width="100%" color="blue"
				text="Use the Button controls to move and resize the phone image in parallel."/>

			<mx:Canvas id="canvas" width="100%" height="100%">
				<mx:Image id="img" x="20" y="20" width="30" height="60"
					source="@Embed(source='assets/Product1.png')"/>
			</mx:Canvas>


		    <s:Button label="Expand" click="expand.end(); expand.play();" />
		    <s:Button label="Contract" click="contract.end(); contract.play();" />
		</s:VGroup>

    </s:Panel>
</s:Application>
