显示标签为“Silverlight”的博文。显示所有博文
显示标签为“Silverlight”的博文。显示所有博文

2007年6月28日

是男人就下100层 silverlight game man 100

the silverlight game "man 100"

我开发了一个silverlight游戏,就是曾经经典的“是男人就下一百层”。现在googlepages可以访问了。大家可以从这个地址访问。http://swanky.wu.googlepages.com/nebula.silverlight.game.man100.html

还有上次的silverlight player 在这个地址http://swanky.wu.googlepages.com/nebula.silverlight.media.player.html

2007年6月18日

关于 silverlight 中媒体下载进度和鼠标事件问题

The ploblems of media download progress and Mouse events in Microsoft Silverlight

在之前开发nebula silverlight media player 遇到了一些比较奇怪的问题,在此标记一下。

媒体下载进度问题。

像我所知道的那样,开发一个播放器,一般来说需要一个timer,在Silverlight中你可以像Joe描述的那样用Storyboard这控件来代替,用法就像Javascript中window.setTimeout 方法一样,一般来说用timer和流媒体下载部分及总大小可以安全地有效地控制Buffer和Play进度问题。但是在Silverlight这些工作已经被“内置”了,使用MediaElement有几个个事件和属性(BufferingProgressChanged, DownloadProgressChanged,BufferingProgress, BufferingTime, DownloadProgress),用事件驱动的方式就能进行控制下载进度的问题了。

但是实际情况不是想像中那样顺利,Buffer似乎在未下载完的和播发的交叠点就进行了,DownloadProgressChanged 事件也不像msdn描述的那样当 DownloadProgress 变化时就触发。

我的暂且方法是像在flash中那样用我们使用前面描述的“timer”来监控DownloadProgress,因为DownloadProgress对下载进度的描述还是准确的。

鼠标事件问题。

msdn对CaptureMouse的条件进行如下描述

  • The mouse is over the Silverlight control client area.
  • No other Silverlight object has captured the mouse.
  • No other non-Silverlight object has captured the mouse.
  • The left mouse button must be in a depressed state.

哦,是的,只有当鼠标在Silverlight之上才有意义。当我们进行一个DragDrop时,当鼠标离开Silverlight控件时,我们就会丢失这个事件。我不得不说这没有Flash处理的好,在Flash中你只需要对stage对象增加鼠标事件句柄就可以对Html的鼠标事件也进行捕捉。

我们需要这样的功能,因为无论Silverlight还是Flash都是在浏览器中,大多不是全屏的。对于这个问题,我还没有太好的解决方法,一旦发现会马上放出。

最后由于Silverlight还是处于Beta的阶段,也许以后会有变动。

2007年6月14日

nebula silverlight media player 测试发布了

nebula silverlight media player beta is published

我用Microsoft Silverlight创建了一个wmv媒体播放器。它基于Silverlight Application (.Net)创建,使用的c#语言。

一开始我本打算用Javascript来创建,因为那样更容易把 nebula flash FLVPlayer代码“迁移”过来,但是后来我发现可能是Silverlight在处于beta的状态,有许多的问题难以解决。比如说在使用一些事件的时候莫名其妙地报错。

它和nebula flash FLVPlayer具有完全相同的功能:

  • 对于已经buffer的部分快进快退
  • 逐帧播放
  • 全屏
  • 音量控制
  • 保持画面比例/拉伸切换

不过可惜的是我不能把它放到互联网上,因为google pages被封了。不过我准备了一些截图,可以欣赏一下。

随后我将把一些碰到的问题和难点写出来,主要包括关于BufferingProgressChanged的使用,动态使用DoubleAnimation等对象动画,以及与flash开发的不同及比较等,敬请期待!

点击图片可查看大图

Update 07.09.2007: google pages 可以访问了 可以通过这个地址访问 http://swanky.wu.googlepages.com/nebula.silverlight.media.player.html

2007年6月13日

在基于c#的Silverlight中设置Canvas.*属性

set elements's Canvas.Left (Canvas.*) atttribute in Silverlight base on c#

当需要在代码控制某个控件的位置的时候,在JavaScript

中使用
object["Canvas.Left"] = value;
而在c#中需要使用
DependencyObject.SetValue(DependencyProperty property, T obj);

//my code 
myControl.SetValue(Canvas.LeftProperty, myControl.Width/2);

这有使用的不同需要注意。