<?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.
//
////////////////////////////////////////////////////////////////////////////////
-->
<createjs:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
					  xmlns:local="*"
					  xmlns:basic="library://ns.apache.org/flexjs/basic"   
					  xmlns:createjs="library://ns.apache.org/flexjs/createjs"
					  xmlns:models="models.*" 
					  xmlns:controllers="controllers.*"
					  initialize="MyModel(model).labelText='Hello World'"
					  >
	
	<!--
	This example shows how to use CreateJS for the web framework. While the example
	shows only a label and button, you can extend the pattern to include other
	controls.
	
	Once you have compiled the application into JavaScript using Falcon JX, you
	must do two more things to make the example work:
	
	1. Copy the CreateJS easeljs JavaScript library into the js-debug or js-release directory
	so it available when the application is opened by the browser.
	
	2. Modify the index.html file that the compile created so that includes the CreateJS
	easeljs library. For example: <script src="./lib/easeljs-0.6.0.min.js"></script>
	-->
	
	<createjs:valuesImpl>
		<basic:SimpleCSSValuesImpl />
	</createjs:valuesImpl>
	<createjs:initialView>
		<local:MyInitialView />
	</createjs:initialView>
	<createjs:model>
		<models:MyModel />
	</createjs:model>
	<createjs:controller>
		<controllers:MyController />
	</createjs:controller>
	
</createjs:Application>
