狀態機剛使用,不太熟,如有錯誤,歡迎指出。
在qml中的介面程式中,介面切換有的比較複雜,使用狀態機則會清晰一點。在使用過程中,發現狀態機的使用有講究。
狀態機使用1:
對於同乙個物件,要使用狀態機改變他的狀態,,需要放在該物件的內部,然後通過狀態的切換,就可以改變器任意的屬性,此時,狀態的name是有用的,不同的name對應不同的狀態。
import qtquick 2.7
import qtquick.controls 2.0
import qtquick.layouts 1.0
rectangle
// visible: j
visible: true
states: [
state
// when:
// statechangescript
// }
},state
propertychanges
// statechangescript
// }}]
}// rectangle
//
// visible: k
// }
mousearea
else
console.log(i%2)}}
}
狀態機使用2:
如果要改變多個物件的狀態,或者說多個物件之間進行狀態的切換,則需要將state放在最外層,此時,不能使用name來進行狀態切換,而要使用when的滿足條件來進行觸發;不可以使用properchange來改變不同的物件的屬性,而要使用執行指令碼statechangescript來進行狀態的屬性切換。
如果指令碼邏輯較複雜,還可以封函式進行呼叫。
import qtquick 2.7
import qtquick.controls 2.0
import qtquick.layouts 1.0
rectangle
statechangescript}},
state
statechangescript}}
]rectangle
visible: j
}rectangle
visible: k
}mousearea
else
console.log(i%2)}}
}
這樣,方法二就可以應用在qml程式架構設計(一)中的第二中使用狀態機的方法中了。但是這裡還會存在乙個隱患,當介面切套複雜,深層的子介面的id是很不好獲取的。
設計模式的C語言應用 狀態機模式 第二章
狀態 state 模式是c語言實現相當常用的模式,也是能夠在c語言 現出來的最顯性的模式之一。在物件導向裡,狀態模式允許乙個物件在內部狀態改變的時候改變其行為。狀態用法很多,最常見的是狀態機,分為無限狀態機和有限狀態機。有限狀態機 finite state machine,fsm,輸入集合和輸出集合...
Unity 火炬之光 筆記(二)狀態機的基本設計
這裡狀態機有兩個部分組成,乙個是管理各種狀態的狀態機,乙個是各種狀態本身。狀態機對外有兩個介面,乙個是新增狀態,乙個是切換狀態。我們給乙個物件用狀態機管理,首先就給它的狀態機新增各種狀態,然後啟動狀態機就ok了,裡面不同的狀態都會在各種時候自己切換到別的狀態。狀態本身主要有四個功能,首先儲存自己收哪...
將Web應用程式設定成有限狀態機
雖然web應用程式是目前最熱門的主題,但它們的程式設計模型有別於傳統的 非web的應用程式,這為開發者帶來了新的挑戰。傳統應用程式具有相當確定的控制流,但web應用程式要針對不由自己控制的外部事件 http請求 來採取行動和生成輸出。我們無法強迫這些事件按特定順序發生,或者強迫在特定情況下發生,所以...