普通键盘手风琴与电子手风琴有啥区别?哪个较好?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了普通键盘手风琴与电子手风琴有啥区别?哪个较好?相关的知识,希望对你有一定的参考价值。

我现在拉的是金杯和鹦鹉牌手风琴,对电子手风琴不太了解。

电子手风琴能组乐队吗?
罗兰手风琴是怎样的

V-手风琴的音色严格说是另一种电声,因为合成器发的声是靠采样后照样本模拟合成的,也就是说,采了哪件乐器(手风琴)的声音,就按照它的频谱特性分析合成。所以基本上还原了原乐器的声音。还原的水平,取决于采样频率和模拟处理数位等计算机处理能力,所以可以肯定,FR-1与FR-7的音色肯定不同,就如同夏利和宝马有区别一样,虽然都是胜任的交通工具。因为它采了80多种手风琴的真声为样本,才有80多种手风琴的音色。费同样事,当然会尽量选择音色上乘的琴作为样本了。这虽然不太等同于我们听音响或电脑中的声音,但也差不多,谁能说听到CD中的手风琴就是真实的簧片声音呢?除非乐器直接发声,且不用任何放大处理。
再说了,不要说80种手风琴,就是一种音质优良的琴的价格是多少,喜欢琴的人该不会不知道。这只是V-手风琴的众多功能之一。
参考技术A 你上隔壁巴扬吧去看看,哪里有详细介绍。

有啥方法可以判断哪个状态更改导致在 SwiftUI 中重建视图?

【中文标题】有啥方法可以判断哪个状态更改导致在 SwiftUI 中重建视图?【英文标题】:Is there any way to tell which state change caused the view to be rebuilt in SwiftUI?有什么方法可以判断哪个状态更改导致在 SwiftUI 中重建视图? 【发布时间】:2020-07-24 17:54:30 【问题描述】:

我有一个视图需要像手风琴一样工作,用户可以拖动它来打开/折叠它。而且我希望它在用户拖动时没有任何动画,但在他离开时动画。所以,我想在我的视图中有两个状态变量(例如,高度和 tempHeight),但我只会在高度变量触发视图重建过程时制作动画。

对 height 和 tempHeight 变化的动画在拖动时看起来很奇怪,感觉有延迟。

描述我的问题的示例代码:

struct ContentView: View 
    @State var tempHeight: CGFloat = 200
    @State var height: CGFloat = 200
    var dragGesture: some Gesture 
        
        DragGesture(),
            .onChanged  value in
                
                tempHeight = min(400, max(200, height + value.translation.height))
            
            .onEnded  value in
                
                height = tempHeight > 300 ? 400 : 200
                tempHeight = height
            
    
    
    var body: some View 
        VStack 
            Spacer()
                .frame(height: 100)
            Color.blue.frame(height: tempHeight)
                .animation(.easeIn)
                .gesture(dragGesture)
            Spacer()
        
    

我试图解决这个问题的方法是使用一个静态变量来跟踪最后发生的状态变化,并且它似乎有效。 我目前的解决方法:

enum StateChange 
    case height
    case tempHeight
    
    static var lastChangeBy: StateChange = .height


struct ContentView: View 
    @State var tempHeight: CGFloat = 200
    @State var height: CGFloat = 200
    
    var dragGesture: some Gesture 
        
        DragGesture()
            .onChanged  value in
                
                tempHeight = min(400, max(200, height + value.translation.height))
                StateChange.lastChangeBy = .tempHeight
            
            .onEnded  value in
                
                height = tempHeight > 300 ? 400 : 200
                tempHeight = height
                StateChange.lastChangeBy = .height
                
            
    
    
    var body: some View 
        VStack 
            Spacer()
                .frame(height: 100)
            Color.blue.frame(height: tempHeight)
                .gesture(dragGesture)
                .animation(StateChange.lastChangeBy == .height ? .easeInOut : .none)
                .animation(.easeInOut)
            Spacer()
        
    

这对我来说就像一个黑客。如果我有很多 @State 包装的变量,它很快就会变得一团糟。是否可以知道哪个状态更改触发了在 body 内构建视图,以便我可以有条件地将动画应用于特定触发器或更好的编写方式。

【问题讨论】:

【参考方案1】:

您可以明确指定哪些值更改在修改器中激活动画,例如

  Color.blue.frame(height: tempHeight)
        .gesture(dragGesture)
        .animation(.easeInOut, value: height)   // << here

【讨论】:

以上是关于普通键盘手风琴与电子手风琴有啥区别?哪个较好?的主要内容,如果未能解决你的问题,请参考以下文章

引导手风琴如何检查哪个面板处于活动状态

我网页现在有一排手风琴效果的图片,现在要求鼠标光标滑到任意一个图,下方显示相应图,用jQuery

有啥方法可以判断哪个状态更改导致在 SwiftUI 中重建视图?

为啥我的 React 手风琴动画不起作用?

css 与过渡加符号的手风琴

JavaScript 手风琴与YUI javascript库