protected override void OnStart() { var layout = new LinearPanel() { ItemSpan = new Vector2DF(0, 36), }; var selector = new Selector<int, Control>(CreateController(), layout); selector.BindKey(Control.Down, Control.Up, Control.Decide, Control.Cancel); selector.Cursor.Texture = Engine.Graphics.CreateTexture2D("ListCursor.png"); selector.IsControllerUpdated = true; var font = Engine.Graphics.CreateDynamicFont("", 20, new Color(255, 0, 0, 255), 0, new Color(0, 0, 0, 0)); var size = selector.Cursor.Texture.Size; var scroll = new ScrollLayer() { Position = new Vector2DF(30, 30), CameraSize = new Vector2DF(200, 200), BindingAreaRange = new RectF(0, 25, 200, 150), BoundaryStartingPosition = new Vector2DF(0, 0), BoundaryEndingPosition = layout.ItemSpan * 10 + new Vector2DF(200, 0), }; var areaChanged = selector.OnSelectionChanged .Select(c => selector.GetItemForChocie(c).Position) .Select(p => new RectF(p.X, p.Y, size.X, size.Y)); scroll.SubscribeSeeingArea(areaChanged); var scene = new Scene(); Engine.ChangeScene(scene); scene.AddLayer(scroll); scroll.AddObject(selector); for(int i = 0; i < 10; i++) { var obj = new TextObject2D() { Font = font, Text = $"アイテム{i}", }; selector.AddChoice(i, obj); } var heart1 = new TextureObject2D() { Position = scroll.BoundaryEndingPosition - new Vector2DF(50, 50), Texture = Engine.Graphics.CreateTexture2D("Heart.png"), }; scroll.AddObject(heart1); var heart2 = new TextureObject2D() { Position = scroll.BoundaryStartingPosition - new Vector2DF(0, 50), Texture = Engine.Graphics.CreateTexture2D("Heart.png"), }; scroll.AddObject(heart2); var viewer = new ScrollBoundViewer(scroll); scroll.AddObject(viewer); }
protected override void OnStart() { obj = new ReactiveTextureObject2D() { Texture = Engine.Graphics.CreateTexture2D("Heart.png"), }; seeingAreaUpdate = new Subject<RectF>(); var scroll = new ScrollLayer() { CameraSize = new Vector2DF(640, 480), BoundaryStartingPosition = new Vector2DF(-180 - 320, -160 - 240), BoundaryEndingPosition = new Vector2DF(320 + 180, 240 + 160), BindingAreaRange = new RectF(0, 0, 640, 480), }; scroll.SetEasingBehaviorUp(EasingStart.StartRapidly2, EasingEnd.EndSlowly3, 15); scroll.SubscribeSeeingArea(seeingAreaUpdate); scroll.SetScrollPosition(new RectI(-320, -240, 640, 480), GetObjectArea()); var scene = new Scene(); scroll.AddObject(obj); scene.AddLayer(scroll); Engine.ChangeScene(scene); var rand = new Random(); for (int i = 0; i < 60; i++) { int x = rand.Next()%1000 - 180 - 320; int y = rand.Next()%800 - 160 - 240; scroll.AddObject(new TextureObject2D { Texture = Engine.Graphics.CreateTexture2D("ZKey.png"), Position = new Vector2DF(x, y) }); } }