コード例 #1
0
ファイル: LAccelerometer.cs プロジェクト: zx8326123/LGame
        public void Start()
        {
            // 模拟器下启动时键盘模拟重力
            if (LSystem.IsEmulator())
            {
                _state._isConnected = true;
                LSystem.CallScreenRunnable(new SensorThread(this, accelerometerValues));
                return;
            }
#if !WINDOWS&&!XBOX
            if (!_state._isConnected && manager == null)
            {
                if (Microsoft.Devices.Sensors.Accelerometer.IsSupported)
                {
                    if (this.manager == null)
                    {
                        this.manager = new Microsoft.Devices.Sensors.Accelerometer();
                        this.manager.TimeBetweenUpdates = (TimeSpan.FromMilliseconds(_sleep));
                        this.manager.CurrentValueChanged += (new EventHandler<Microsoft.Devices.Sensors.SensorReadingEventArgs<Microsoft.Devices.Sensors.AccelerometerReading>>(this.accelerometer_CurrentValueChanged));
                    }
                    _state._isConnected = true;
                }
                else
                {
                    _state._isConnected = false;
                }
                if (_state._isConnected)
                {
                    if (this.manager != null)
                    {
                        try
                        {
                            this.manager.Start();
                        }
                        catch (InvalidOperationException ex)
                        {
                            Loon.Utils.Debugging.Log.Exception(ex);
                        }
                        return;
                    }
                }
#endif
                // 如果无法正常启动,则开启伪重力感应
                if (!_state._isConnected)
                {
                    _state._isConnected = true;
                    LSystem.CallScreenRunnable(new SensorThread(this, accelerometerValues));
                }
            }
        }
コード例 #2
0
ファイル: LProcess.cs プロジェクト: nobcdz/LGame
        private void SetScreen(Screen screen, bool put)
        {
            if (currentControl != null && currentControl.IsOnLoadComplete())
            {
                return;
            }
            lock (this)
            {
                if (screen == null)
                {
                    this.isInstance = false;
                    throw new RuntimeException(
                              "Cannot create a [Screen] instance !");
                }
                GLLoader.Destory();
                if (!LSystem.isLogo)
                {
                    if (currentControl != null)
                    {
                        SetTransition(screen.OnTransition());
                    }
                    else
                    {
                        LTransition transition = screen.OnTransition();
                        if (transition == null)
                        {
                            switch (MathUtils.Random(0, 3))
                            {
                            case 0:
                                transition = LTransition.NewFadeIn();
                                break;

                            case 1:
                                transition = LTransition.NewArc();
                                break;

                            case 2:
                                transition = LTransition
                                             .NewSplitRandom(LColor.black);
                                break;

                            case 3:
                                transition = LTransition
                                             .NewCrossRandom(LColor.black);
                                break;
                            }
                        }
                        SetTransition(transition);
                    }
                }
                screen.SetOnLoadState(false);
                if (currentControl == null)
                {
                    currentControl = screen;
                }
                else
                {
                    lock (currentControl)
                    {
                        currentControl.Destroy();
                        currentControl = screen;
                    }
                }
                this.isInstance = true;
                if (screen is EmulatorListener)
                {
                    SetEmulatorListener((EmulatorListener)screen);
                }
                else
                {
                    SetEmulatorListener(null);
                }

                screen.OnCreate(LSystem.screenRect.width, LSystem.screenRect.height);

                LSystem.CallScreenRunnable(new _LoadingScreen(this, screen));

                if (put)
                {
                    screens.AddLast(screen);
                }
                loading_Control = null;
            }
        }