// トランジション
    IObservable <T> MoveTransition <T> (string screenType, TransitionStyle transitionStyle, Action <T> action = null)
        where T : ScreenPresenter
    {
        var        subject = new AsyncSubject <T> ();
        GameObject obj     = Instantiate(ResourcesManager.Instance.GetScreen(screenType), screenContainer) as GameObject;
        var        canvas  = obj.GetComponent <Canvas> ();
        T          screen  = obj.GetComponent <T> ();
        var        effect  = TransitionFactory.Create(transitionStyle);

        Action <Unit> setParam = _ => {
            if (action != null)
            {
                action(screen);
            }
        };

        canvas.enabled = false; // 生成して非表示にしておく
        effect.AnimateIn()
        .SelectMany(_ => screen.Initialize())
        .Do(setParam)
        .SelectMany(_ => screen.OnBeforeMoveIn())
        .Do(_ => canvas.enabled = true)
        .SelectMany(_ => Observable.WhenAll(effect.AnimateOut(), screen.OnMoveIn()))
        .SelectMany(_ => screen.OnEndMoveIn())
        .Subscribe(_ => {}, () => {
            subject.OnNext(screen);
            subject.OnCompleted();
        });
        return(subject);
    }
Beispiel #2
0
 public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
 {
     if (value == null)
     {
         return(TransitionFactory.CreateTransition("Fade Transition"));
     }
     return(TransitionFactory.CreateTransition((string)value));
 }
Beispiel #3
0
 private void TransitionList_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
 {
     if (this.photoListBox.SelectedItem != null && this.photoListBox.SelectedItem is ComposePhotoViewModel)
     {
         // 更新设计器以显示选定特效所需的额外的控件.
         // UI是一个内容绑定到视图模型的TransitionDesigner属性的ContentControl.
         ComposePhotoViewModel photo = (ComposePhotoViewModel)this.photoListBox.SelectedItem;
         photo.TransitionDesigner = TransitionFactory.CreateTransitionDesigner(this.transitionList.SelectedItem.ToString());
     }
 }
Beispiel #4
0
        private void WindowLoaded(object sender, RoutedEventArgs e)
        {
            // Set the invariant culture as the default one
            LocalizationManager.ChangeCulture(CultureInfo.InvariantCulture);

            // Set transition animation
            NavigationManager.ChangeTransitionAnimation(TransitionFactory.FlipTransition());

            // Navigate to "Home" screen first
            NavigationManager.NavigateTo(ScreenId.Home);
        }
        /// <summary>
        /// Change the current screen.
        /// This will load the content of the screen if necessary
        /// </summary>
        /// <param name="screen">The screen to add to the stack</param>
        public void SetScreen(BaseScreen screen)
        {
            screenStack.Add(screen);

            if (!screen.isContentLoaded)
            {
                Task.Factory.StartNew(() =>
                {
                    this.state = State.Loading;
                    screen.LoadContent(Game1.Instance.Content);
                    this.transition = TransitionFactory.GetTransition(screen.transitionKind);
                    this.transition.Start();
                    this.state = State.Transitioning;
                });
            }
        }
Beispiel #6
0
        private void OKButton_Click(object sender, System.EventArgs e)
        {
            this.StoreSelection();

            // 添加所有选中的图片到App.MediaCollection.
            foreach (ChoosePhotoViewModel photo in this._selectedPhotos)
            {
                Photo photoModel = new Photo()
                {
                    Name            = photo.Name,
                    ThumbnailStream = photo.MediaStream,
                    PhotoDuration   = TimeSpan.FromSeconds(5d),
                    Transition      = TransitionFactory.CreateDefaultTransition()
                };
                if (!App.MediaCollection.Contains(photoModel))
                {
                    App.MediaCollection.Add(photoModel);
                }
            }

            // 回到调用页面
            this.NavigationService.GoBack();
        }
    IEnumerator MoveTransitionCoroutine <T> (string screenType, IObserver <T> observer, TransitionStyle transitionStyle = TransitionStyle.Null, Action <T> action = null)
        where T : ScreenPresenter
    {
        var effect = TransitionFactory.Create(transitionStyle);

        yield return(effect.AnimateIn().ToYieldInstruction());

        // 生成
        GameObject obj    = Instantiate(ResourcesManager.Instance.GetScreen(screenType), screenContainer) as GameObject;
        T          screen = obj.GetComponent <T> ();


        // 初期化
        yield return(screen.Initialize().ToYieldInstruction());

        // モデルの注入
        if (action != null)
        {
            action(screen);
        }
        // 遷移
        yield return(screen.OnBeforeMoveIn().ToYieldInstruction());

        //Debug.LogError ("BeforeMoveIn終了");
        yield return(Observable.WhenAll(
                         screen.OnMoveIn(),
                         effect.AnimateOut()
                         ).ToYieldInstruction());

        yield return(screen.OnEndMoveIn().ToYieldInstruction());

        // 副作用
        CurrentScreen = screen;
        observer.OnNext(screen);
        observer.OnCompleted();
    }
Beispiel #8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Transition"/> class.
 /// </summary>
 /// <param name="factory">The factory.</param>
 /// <param name="interpolator">The interpolator.</param>
 public Transition(TransitionFactory factory, SharpDX.Animation.Interpolator interpolator)
 {
     factory.CreateTransition(interpolator, this);
 }
Beispiel #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Transition"/> class.
 /// </summary>
 /// <param name="factory">The factory.</param>
 /// <param name="interpolator">The interpolator.</param>
 public Transition(TransitionFactory factory, SharpDX.Animation.Interpolator interpolator)
 {
     factory.CreateTransition(interpolator, this);
 }
Beispiel #10
0
 /// <summary>
 /// Change the factory used by the builder to create transition objects
 /// </summary>
 /// <param name="transitionFactory">the new transition factory</param>
 public void SetTransitionFactory(TransitionFactory transitionFactory)
 {
     this.factory = transitionFactory;
 }