2012-03-12 28 views
12

Tôi có một lớp cơ sở được gọi là Room và một lớp con được gọi là Attic và một lớp khác được gọi là Basement.AS3 Đúc một loại khác

Tôi có một lớp điều khiển có thuộc tính được gọi là CurrentLocation là loại Room. Ý tưởng là tôi muốn có thể đặt Attic hoặc Basement trong thuộc tính đó và lấy lại, sau đó truyền cho bất kỳ loại nào.

Vì vậy, nếu trên bộ điều khiển nội dung thuộc loại Attic, tôi đang cố gắng tìm hiểu cách truyền một cách rõ ràng. Tôi nghĩ tôi biết nhưng nó không làm việc ... Đây là những gì tôi nghĩ rằng nó sẽ là, vay từ Java:

var myAttic:Attic = (Attic) Controller.CurrentLocation; 

này mang lại cho tôi một lỗi cú pháp:

1086: Syntax error: expecting semicolon before instance.

Vì vậy, làm thế nào để bạn cast ngầm ? Hoặc bạn có thể? Tôi có thể thề tôi đã làm điều này trước khi as3.

Trả lời

25

Dưới đây là lựa chọn của bạn cho đúc trong ActionScript 3:

  1. Sử dụng as.

    var myAttic:Attic = Controller.CurrentLocation as Attic; // Assignment. 
    (Controller.CurrentLocation as Attic).propertyOrMethod(); // In-line use. 
    

    này sẽ gán null để myAttic nếu các diễn viên thất bại.

  2. Bọc trong Type().

    var myAttic:Attic = Attic(Controller.CurrentLocation); // Assignment. 
    Attic(Controller.CurrentLocation).propertyOrMethod(); // In-line use. 
    

    Điều này sẽ ném TypeError nếu quá trình truyền không thành công.

+2

Tại sao lại được ưu tiên hơn? Nó phụ thuộc. Ngoài ra 'Class (bla)' là các đơn đặt hàng của cường độ chậm hơn nếu nó không thành công. Việc kiểm tra 'null' luôn dễ dàng hơn. –

+0

@Marty Wallace để cho chúng tôi biết cách "thích" để bao bọc trong mảng, XML hoặc đối tượng? –

+0

@Marty Wallace tưởng tượng chúng ta có Array hoặc XML hoặc Object type thay vì Attic. Điều đó có ảnh hưởng đến câu trả lời của bạn không? –

Các vấn đề liên quan