@@ -313,7 +313,7 @@ private void _Initialize(string fileName)
313313 }
314314
315315 sldZoom . PropertyChanged += SldZoom_PropertyChanged ;
316- sldFrame . PropertyChanged += SldFrame_PropertyChanged ;
316+ txtFrame . PropertyChanged += TxtFrame_PropertyChanged ;
317317
318318 btnClear . Tapped += BtnClear_Tapped ;
319319 btnCut . Tapped += BtnCut_Tapped ;
@@ -351,7 +351,6 @@ private void _Initialize(string fileName)
351351 this . Focus ( ) ;
352352 }
353353
354-
355354 #region Color
356355
357356 private void BtnPaper_Click ( object ? sender , Avalonia . Interactivity . RoutedEventArgs e )
@@ -498,17 +497,34 @@ private void SpriteProperties_Command(SpritePropertiesControl sender, string com
498497 SpriteList_Clone ( sender . SpriteData ) ;
499498 SpriteList_Modified ( sender . SpriteData ) ;
500499 break ;
500+ case "FRAMEUPDATE" :
501+ {
502+ int f = sender . SpriteData . Frames - 1 ;
503+ if ( f < 0 )
504+ {
505+ f = 0 ;
506+ }
507+ else if ( f > 255 )
508+ {
509+ f = 255 ;
510+ }
511+ txtFrame . Maximum = f ;
512+ txtFrame . Text = f . ToString ( ) ;
513+ txtFrame . UpdateLayout ( ) ;
514+ SpriteProperties_Command ( sender , "REFRESH" ) ;
515+ }
516+ break ;
501517 case "REFRESH" :
502518 ctrlEditor . SpriteData = sender . SpriteData ;
503519 SpriteList_Modified ( sender . SpriteData ) ;
504520 if ( ctrlEditor . SpriteData . CurrentFrame != actualFrame )
505521 {
506- actualFrame = ctrlEditor . SpriteData . CurrentFrame ;
507- if ( sldFrame . Maximum < actualFrame )
522+ txtFrame . Value = actualFrame ;
523+ if ( txtFrame . Maximum < actualFrame )
508524 {
509- sldFrame . Maximum = actualFrame ;
525+ txtFrame . Maximum = actualFrame ;
510526 }
511- sldFrame . Value = actualFrame ;
527+ txtFrame . Value = actualFrame ;
512528 Refresh ( ) ;
513529 }
514530 UpdateColorPanel ( ) ;
@@ -607,7 +623,7 @@ private void SpriteList_Insert(Sprite spriteData)
607623 spriteData . Frames ++ ;
608624 ctrlProperties . Refresh ( ) ;
609625 ctrlEditor . Refresh ( ) ;
610- sldFrame . Maximum = spriteData . Frames ;
626+ txtFrame . MaxHeight = spriteData . Frames - 1 ;
611627 }
612628
613629
@@ -688,16 +704,16 @@ private void Editor_Command(SpritePatternEditor sender, string command)
688704
689705 private void Refresh ( )
690706 {
691- txtFrame . Text = "Frame " + actualFrame . ToString ( ) ;
707+ txtFrame . Text = actualFrame . ToString ( ) ;
692708 if ( ctrlProperties . SpriteData != null )
693709 {
694- sldFrame . Maximum = ctrlProperties . SpriteData . Frames ;
710+ txtFrame . Maximum = ctrlProperties . SpriteData . Frames - 1 ;
695711 }
696712 else
697713 {
698- sldFrame . Maximum = 0 ;
714+ txtFrame . Maximum = 0 ;
699715 }
700- sldFrame . UpdateLayout ( ) ;
716+ txtFrame . UpdateLayout ( ) ;
701717 }
702718
703719
@@ -742,13 +758,20 @@ private void ZoomOut()
742758 }
743759
744760
745- private void SldFrame_PropertyChanged ( object ? sender , Avalonia . AvaloniaPropertyChangedEventArgs e )
761+ private void TxtFrame_PropertyChanged ( object ? sender , AvaloniaPropertyChangedEventArgs e )
746762 {
747- byte v = ( byte ) sldFrame . Value ;
748- if ( actualFrame == v || ctrlProperties . SpriteData == null || v < 0 || v >= ( ctrlProperties . SpriteData . Frames ) )
763+ byte v = txtFrame . Text . ToByte ( ) ;
764+ if ( actualFrame == v ||
765+ ctrlProperties . SpriteData == null ||
766+ v < 0 ||
767+ v >= ( ctrlProperties . SpriteData . Frames ) )
749768 {
750769 return ;
751770 }
771+ if ( v > 255 )
772+ {
773+ v = 255 ;
774+ }
752775 actualFrame = v ;
753776 if ( ctrlEditor . SpriteData != null )
754777 {
0 commit comments