2011-06-24 20 views
7

Tôi muốn sử dụng thẻ Siêu dữ liệu sự kiện để hiển thị loại sự kiện mà kiểm soát của tôi sẽ gửi. Cú pháp trông giống như:Siêu dữ liệu sự kiện: Sử dụng biến tĩnh cho thuộc tính "tên"?

<fx:Metadata> 
    [Event(name="eventName", type="MyEvent")] 
</fx:Metadata> 

Nó có vẻ như một thực hành tốt nhất trong Flex/Actionscript để xác định các biến tĩnh mà xác định tên sự kiện như vậy:

public class MyEvent extends Event 
{ 
    public static const EVENT_NAME:String = "eventName"; 
    // Other stuff.. 
} 

Đó là một thực tế rất lớn kể từ khi tên sự kiện có thể thay đổi dễ dàng và không phải sửa đổi trong suốt mã. Vì vậy, câu hỏi của tôi là: Có cách nào để sử dụng const tĩnh này trong thẻ sự kiện siêu dữ liệu của tôi không? Tôi dường như không thể làm điều gì đó như thế này:

<fx:Metadata> 
    [Event(name="{MyEvent.EVENT_NAME}", type="MyEvent")] 
</fx:Metadata> 

Tôi chỉ không biết cú pháp thích hợp để thực hiện việc này hay không? Có vẻ như nó chỉ yêu cầu khó tìm lỗi nếu ai đó quyết định thay đổi const vì nó không được gõ mạnh ở đây. Cảm ơn trước!

Trả lời

6

Tin xấu là nó là không thể :(Tôi mơ về khả năng này nhưng ...

+0

Yea, đó là một khó chịu lớn đến mức mà tôi hiếm khi sử dụng nó. Tôi chỉ muốn 'myComp.addEventListener' hơn là sử dụng MXML, haha. –

1

yeah, đây là không thể làm, nhưng có gì ngăn cản bạn làm kiểm tra thời gian chạy của riêng bạn. Metadata có sẵn bằng cách gọi describeType() trên lớp (trong trường hợp này) phân tích cú pháp xml và kiểm tra các giá trị đối với các const của bạn nếu có vấn đề, hãy ném lỗi hoặc xuất ra một dấu vết, nó không hoàn hảo, nhưng nó sẽ cung cấp cho bạn một số an toàn