每天学点Silverlight&Flash1——XMl操作

最近在学习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分钟(包括查找资料和类的使用学习)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章