none
Silverlight加载动画问题 RRS feed

  • 问题

  • 大家好,我想问一下,如果用sl做一个网站的开场动画,经常会碰到STORYBOARD头几秒动画没有被播放的情况,估计是页面还没有刷新出来但是动画已经开始放了。所以想问问大家都是怎么避免这个问题的?

    另外还有一个顺带的问题,就是我装了BLEND 3以后,就没有办法用BLEND打开或者新建项目了,老是提示说创建"ProjectName"失败;值不能为空。参数名:uriString
    不知道大家有没有遇到这种情况呢?
    2009年5月15日 13:29

答案

  •         public MainPage()
    
            {
    
                InitializeComponent();
    
                LayoutRoot.LayoutUpdated += new EventHandler(LayoutRoot_LayoutUpdated);
    
            }
    
            void LayoutRoot_LayoutUpdated(object sender, EventArgs e)
    
            {
    
                Storyboard1.Begin();
    
            }
    LayoutUpdeted事件里面加,试试
    2009年5月18日 4:11
    版主

全部回复

  • 在你的LayoutRoot的Loaded之后再触发Storyboard,或者Storyboard前几秒先不动就好了

    我的Blend 3没有你说的这个问题,重新安装Blend 3看看

    2009年5月15日 14:34
    版主
  • 问一个弱弱的问题哈,怎么在LOADED事件之后触发另一个事件或者一个STORYBOARD啊?

    另外,你BLEND 3 和 BLEND 2 是都装在\Program Files\Microsoft Expression\下面吗?

    2009年5月18日 0:55
  • 都装在\Program Files\Microsoft Expression\下面了

            public MainPage()
            {
                InitializeComponent();
                LayoutRoot.Loaded += new RoutedEventHandler(LayoutRoot_Loaded);
            }
            void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
            {
                Storyboard1.Begin();
            }
    2009年5月18日 1:24
    版主
  • 不瞒你说啊,貌似还是不行呢!
    这个LOADED事件我早就觉得有点不太对劲了,好像不像微软官方说的那样,是在取得页面布局和其它一些东西之后才进行的。
    我做了一个CRS用户控件(x:name = myCRS),里面有一个Initail的storyboard作为开场动画,然后像你说的那样在MAINPAGE里面触发了LOADED事件,并且调用myCRS.Inital.Begin();

    但是还是不行,老是页面还没有加载完,动画就已经开始播放了。我试过你说的在storyboard前置入几个空帧,但是同学有些机子慢的跑这个程序还是看不到完整动画,因为只设置了3秒空帧,有些机子却是5秒都还在加载,等动画出来的时候已经放一半了。

    一直有这个的困扰在,所以上坛子问一问,不知道还有没有其它方法呢?我可以提供源代码,坛子能放上来吗?

    PS:另外,在“silverlight3.0 如何浏览器外独立运行呀,很复杂吗?”这帖中我也有点问题,望版主回答一下,谢啦啦~~~
    2009年5月18日 2:32
  •         public MainPage()
    
            {
    
                InitializeComponent();
    
                LayoutRoot.LayoutUpdated += new EventHandler(LayoutRoot_LayoutUpdated);
    
            }
    
            void LayoutRoot_LayoutUpdated(object sender, EventArgs e)
    
            {
    
                Storyboard1.Begin();
    
            }
    LayoutUpdeted事件里面加,试试
    2009年5月18日 4:11
    版主
  • 哈哈!行了,可是这是为什么呢?这两个事件有什么不一样呢?看了MSDN上面的解释,不太明白,只有一点~~~

    2009年5月18日 4:41
  • 一个是载入执行,一个是绘制后执行,绘制后的顺序在Loaded之后

    2009年5月18日 5:11
    版主
  • 哦!原来如此,谢谢指点!

    2009年5月18日 11:43