Tôi hy vọng rằng ai đó có thể giúp tôi giải quyết vấn đề này, hoặc ít nhất là chỉ ra lỗi của con đường của tôi ...Tăng Statechart - Chuyển tiếp địa phương
Như một minh hoạ đơn giản về vấn đề của tôi xem xét một phần một ứng dụng mà bạn có thể nhập trạng thái hoạt động của Chế độ chức năng. Bốn chế độ phụ sau đó khả dụng tùy thuộc vào phím chức năng F1-F4 mà người dùng nhấn. Theo mặc định, chế độ F1 được nhập. Sơ đồ nhà nước bắt đầu giảm giá như sau:
Người dùng có thể nhấn F1-F4 bất cứ lúc nào để chuyển sang chế độ tương ứng. Thêm những hiệu ứng chuyển tiếp đến trạng thái bên trong dẫn đến những điều sau đây:
Rõ ràng đây là (a) một mớ hỗn độn, và (b) có rất nhiều hiệu ứng chuyển tiếp để xác định. Nếu tại một số điểm tôi muốn thêm một F5Mode sau đó ... tốt, bạn sẽ có được hình ảnh. Để tránh điều này tôi muốn làm như sau:
Boost Statechart cho phép tôi để xác định quá trình chuyển đổi từ FunctionMode với bất kỳ trạng thái bên trong, nhưng kết quả không phải là điều tôi mong đợi. Kết quả thực tế như sau:
I.e. nhấn F1-F4 để chuyển đổi chế độ khiến trạng thái FunctionMode bên ngoài bị thoát và được nhập lại cùng với kích hoạt hành động thoát và nhập không mong muốn.
Cách quay lại năm 2006, this thread giữa tác giả thư viện và người dùng dường như mô tả cùng một vấn đề. Tôi nghĩ rằng tác giả đề nghị làm những điều sau đây là một công việc xung quanh:
Tuy nhiên, đó công việc xung quanh không có vẻ rất hấp dẫn với tôi: Nó đã được thêm vào một cấp tiểu bang thêm được biên dịch, mã đã trở nên ít có thể đọc được, lịch sử sâu sẽ phải được sử dụng để trở về bất kỳ trạng thái phụ chế độ chức năng nào và đối tượng trạng thái trung gian là không cần thiết bị hủy và xây dựng lại.
Vì vậy ... tôi đang gặp vấn đề ở đâu? Hoặc các lựa chọn thay thế là gì? Tôi đã có một cái nhìn ngắn tại Boost Meta State Machine (msm) nhưng từ những gì tôi đã nhìn thấy cho đến nay tôi rất thích giao diện của Statechart.
Tôi ngạc nhiên khi nhiều người dùng khác không gặp phải vấn đề tương tự ... điều này khiến tôi nghĩ rằng có lẽ cách tiếp cận của tôi hoàn toàn sai!
Rất cám ơn vì điều đó và xin lỗi vì sự chậm trễ trong phản hồi, có vẻ như tôi chưa bật thông báo qua email. Thật không may, phản ứng trong nhà nước có cùng một vấn đề - gọi Transit <> từ trạng thái bên ngoài để thay đổi trạng thái bên trong vẫn làm cho trạng thái bên ngoài được thoát ra và được nhập lại. Tuy nhiên, thay thế được đề xuất của bạn trông khá gọn gàng với tôi, vì vậy cảm ơn vì điều đó! – Grant
@Grant: cảm ơn và tôi rất vui vì bạn thích :-) –