最近在学习Flash,准备每天都花点时间去用Silverlight和Flash去实现些相同的功能。
我之前有学过半年的Silverlight,因为完全可以用C#来写,最多学习了半年的Silverlight,比较扯得是项目里竟然用flash,我发现还是得懂点flash。。
在园子里看到夏天的树每天学点flash系列不错,我就试着学习他每天学点。有些功能都是和他的一样,但是代码我完全都是我写的。
1.简单加密功能实现:
通过获取当前的天来判断是否等于某个数,不同的情况我们让程序显示不同的内容。
a.使用Flash实现:
i. 创建一个Flash文件:
使用ActionScript3.0。
ii.在默认的那一帧中添加一个文本如下图:
iii.插入一个新的关键帧,并把它的文字设置为"对不起,系统已经过期"如下图:
并保存文件为"Encryption.fla"。
iv.新建一个as文件,并保存为Encryption.as:
需要注意的是:Encryption.as和Encryption.fla必须保存在同一目录下。
as文件的代码:
package
{
import flash.events.MouseEvent;
import flash.system.ApplicationDomain;
import flash.events.Event;
import flash.display.MovieClip;
public class Document extends MovieClip{
public function Document(){
this.addEventListener(Event.ADDED_TO_STAGE,on_added_to_stage);
}
private function on_added_to_stage(e:Event):void{
// the MovieClip stoped at the first frame
stop();
// get the datetime
var myday:Date = new Date();
var mydate:Number = myday.getDate();
//trace(mydate); ----- 12
if(mydate==12)
{
this.gotoAndStop(2);
}
}
}
}
最后一步是要把这个as文件绑定到fla文件。
b.使用SIlverlight实现:
i.创建一个Silverlight应用程序,如下图:
ii.xaml文件内容:
1 <UserControl x:Class="Encryption.MainPage"
2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6 Width="550" Height="400">
7
8 <Grid x:Name="LayoutRoot" Background="#FF9865">
9 <TextBlock Height="23" HorizontalAlignment="Left" Margin="190,176,0,0" Name="tblk1" Text="欢迎你使用这个系统" VerticalAlignment="Top" Width="177" FontSize="13" FontFamily="Comic Sans MS" Foreground="#FF0000" />
10 </Grid>
11 </UserControl>
iii.cs文件的内容:
比较:Silverlight程序耗时:5分钟; Flash程序耗时:10分钟。(只是我个人的使用时间,我是个actionscript新手)
--------------------------------------------------------------------------------------------------------------------------------------
2.读取XML文件:
功能描述:读取一个XML文件的内容,并让它显示在一个界面。
XML文件的内容:
<?xml version="1.0" encoding="utf-8"?>
<GALLERY>
<IMAGE TITLE="Nicholas">image1.jpg</IMAGE>
</GALLERY>
a.使用Flash实现:
i.创建一个Actionscript文件也就是as文件起名为"ReadXML.as":
具体的创建方法上面例子里有说明。
as文件中需要使用ActionScript实现的功能:加载xml文件,并让它的节点内容显示在第一帧。代码:
package
{
import flash.system.System;
import flash.system.ApplicationDomain;
import flash.events.Event;
import flash.display.MovieClip;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.TextField;
public class ReadXML extends MovieClip{
public function ReadXML(){
this.addEventListener(Event.ADDED_TO_STAGE,on_added_to_stage);
}
private function on_added_to_stage(e:Event):void{
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("Nicholas.xml"));
myLoader.addEventListener(Event.COMPLETE,processXML);
}
private function processXML(e:Event):void{
var myXML:XML;
var myText:TextField = new TextField();
var myArray:Array = new Array();
myXML = new XML(e.target.data);
// push each Title to the array
for (var i:int = 0; i<myXML.*.length(); i++){
trace("My image number is " + (i+1) + ", it's title is " + myXML.IMAGE[i].@TITLE + " and it's URL is " + myXML.IMAGE[i]);
myArray.push(myXML.IMAGE[i].@TITLE);
}
// trace(myXML.IMAGE.@TITLE);
myText.text = myXML.IMAGE.@TITLE;
addChild(myText);
myText.x=220;
myText.y=200;
myText.textColor=0xFF00000;
myText.thickness=5;
}
}
}
ii.创建一个fla文件,最好和ReadXML.cs文件在同一目录下,并这个flash文件添加后台代码:
iii.运行程序。
b.使用Silverlight实现:
i.创建一个SIlverlight应用程序;
方法在上面那个例子里有说明。
ii.把上面那个XML文件添加到项目中:
iii.在xaml中需要添加一个控件Canvas:
<UserControl x:Class="XMLReader.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Width="550" Height="400">
<Grid x:Name="LayoutRoot" Background="#FF9865">
<Canvas x:Name="canvas" Width="550" Height="400"></Canvas>
</Grid>
</UserControl>
iv.使用linqtoxml读取xml节点,并把内容通过一个textblock显示在前台。
public MainPage()
{
InitializeComponent();
Loaded+=new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, EventArgs e)
{
var images = from img in XElement.Load("Nicholas.xml").Elements("IMAGE")
select img;
TextBlock block = new TextBlock();
block.SetValue(Canvas.TopProperty, 200.0);
block.SetValue(Canvas.LeftProperty, 220.0);
block.Text = "";
foreach (var image in images)
{
block.Text+= image.FirstAttribute.Value;
}
canvas.Children.Add(block);
}
}
对比:Silverlight耗时5分钟,Flash耗时15分钟(包括查找资料和类的使用学习)