package animation import ( "fmt" "strings" ) // BlinkAnimation 闪烁动画 type BlinkAnimation struct { BaseAnimation BlinkCount int // 闪烁次数 MinOpacity float64 // 最小透明度 MaxOpacity float64 // 最大透明度 } // NewBlinkAnimation 创建一个闪烁动画 func NewBlinkAnimation(targetID string, minOpacity, maxOpacity float64, blinkCount int, duration float64, repeatCount int) *BlinkAnimation { return &BlinkAnimation{ BaseAnimation: BaseAnimation{ Type: Blink, // 闪烁动画类型 Duration: duration, RepeatCount: repeatCount, Delay: 0, TargetID: targetID, Attributes: make(map[string]string), }, BlinkCount: blinkCount, MinOpacity: minOpacity, MaxOpacity: maxOpacity, } } // GenerateSVG 生成闪烁动画的SVG代码 func (a *BlinkAnimation) GenerateSVG() string { var sb strings.Builder // 创建一个animate元素 sb.WriteString(fmt.Sprintf(" 0 { sb.WriteString(fmt.Sprintf("repeatCount=\"%d\" ", a.RepeatCount)) } if a.Delay > 0 { sb.WriteString(fmt.Sprintf("begin=\"%gs\" ", a.Delay)) } sb.WriteString("/>\n") return sb.String() }