2011-06-23 29 views
5

Tôi có thư viện thành phần. Nó có một file manifest trông như thế này:Tôi làm cách nào để FlashBuilder sử dụng tiền tố không gian tên tùy chỉnh

<?xml version="1.0"?> 
<componentPackage> 
    <component id="AutoComplete" class="be.edge.components.AutoComplete" /> 
    <!-- more components left out for brevity --> 
</componentPackage> 

tôi biên dịch thư viện thông qua FlashBuilder với các thiết lập trình biên dịch:

FlashBuilder library compiler namespace inputs

Khi tôi sử dụng thư viện biên soạn trong FlashBuilder các dự án khác mọi thứ hoạt động như kỳ vọng. Tôi có được hoàn thành mã và khi tôi chọn một gợi ý từ hoàn thành mã một thuộc tính namespace được tự động thêm vào các thành phần, như thế này:

<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:ns="library://ns.edge.be" > 

    <ns:AutoComplete /> 

</s:Skin> 

Nhưng: FlashBuilder tự động tạo tiền tố 'ns'. Tôi muốn tùy chỉnh này để 'e' ví dụ. Làm thế nào tôi có thể làm cho FlashBuilder sử dụng tiền tố tùy chỉnh này theo mặc định?

Tôi có hai lý do cho việc này:

  1. 'ns' không nói bất cứ điều gì: nó chỉ nói Một namespace đã được sử dụng, không phải những gì namespace.
  2. khi tôi sử dụng các thư viện khác cũng bắt đầu bằng url như 'library: // ns.' FlashBuilder có thể sẽ bắt đầu đánh số các tiền tố để giải quyết xung đột (ns, ns1, ns2, v.v.), điều này thậm chí còn khó hiểu hơn.

EDIT:

tôi cũng vượt qua một config.xml để trình biên dịch mà có tờ khai sau liên quan đến không gian tên:

<compiler> 
    <namespaces> 
     <namespace> 
      <uri>library://ns.edge.be</uri> 
      <manifest>manifest.xml</manifest> 
     </namespace> 
    </namespaces> 
</compiler> 

<include-namespaces> 
    <uri>library://ns.edge.be</uri> 
</include-namespaces> 

Trả lời

6

này sử dụng làm việc:

Tạo một tập tin gọi design.xml trong thư mục/src của bạn:

<?xml version="1.0" ?> 
<design> 
    <namespaces> 
     <namespace prefix="mangos" uri="http://com.mangofactory.sample/mxml/2010" /> 
    </namespaces> 
</design> 

Tạo một tập tin gọi manifest.xml trong thư mục/src của bạn:

<componentPackage> 
     <component id="MyClass" class="com.mangofactory.framework.MyClassTag"/> 
</componentPackage> 

Định cấu hình URL không gian tên của bạn, v.v. trong thuộc tính dựng: enter image description here

này được phải gây builder flash để nhắc nhở như sau:

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" 
       xmlns:mangos="http://com.mangofactory.sample/mxml/2010"> 
    <fx:Declarations> 
     <mangos:MyClass /> 
    </fx:Declarations> 
</s:Application> 

(Lưu ý rằng lớp xuất hiện như MyClass thay vì MyClassTag, và không gian tên xuất hiện như mangos)

Tuy nhiên , Tôi chỉ cố gắng làm điều này, và mặc dù lớp được đổi tên chính xác, không gian tên xuất hiện là ns. Tôi biết điều này được sử dụng để làm việc trong FB3.x, có lẽ tôi đã quên một bước, hoặc FB4.5 đã phá vỡ nó.

+0

Tôi đã thử, hy vọng rằng nó sẽ làm việc kỳ diệu trên hệ thống của tôi. Nhưng nó không. Bạn có nên tham khảo design.xml đó ở đâu đó không? Nếu không thì trình biên dịch không thể biết về nó. (Tôi sẽ thêm một số thông tin trình biên dịch vào câu hỏi của mình.) – RIAstar

+0

Tôi cũng đã thử thêm 'prefix =" e "' vào thẻ 'namespace' trong tệp config.xml của mình, không có kết quả (tôi không nhận được lỗi mặc dù). – RIAstar

+4

Aha! Chỉ tìm thấy phần còn thiếu: bạn phải bao gồm tệp design.xml trong swc bằng cách đánh dấu hộp kiểm của nó trong tab 'Nội dung' trong 'Đường dẫn xây dựng thư viện Flex'. Bạn đã cho tôi ở đó, vì vậy tôi sẽ chấp nhận câu trả lời của bạn. – RIAstar

0

Nếu bạn chỉ cần thay đổi xmlns:ns-xmlns:e hoặc xmlns:foo sau đó trình phân tích cú pháp MXML sẽ nhận sự thay đổi. Nó không phải là tất cả những khó khăn để thay đổi, và tôi không nghĩ rằng có một cách để thay đổi cách nó tạo ra không gian tên theo mặc định.

+0

Tôi biết, nhưng tôi chỉ cảm thấy mệt mỏi khi thay đổi nó mỗi khi tôi tạo một thành phần mxml mới. – RIAstar

+0

Tôi poked xung quanh trong các ưu đãi, và tôi không thấy bất cứ điều gì mà sẽ cho phép bạn thay đổi điều này. Bạn có lẽ sẽ phải thay thế một số lớp java trong plugin sửa đổi hành vi này. Hy vọng rằng ai đó sẽ đưa ra một câu trả lời tốt hơn cho bạn. –

+0

Thật không may, FlashBuilder không phải là mã nguồn mở, do đó sẽ khá khó khăn. Một số mày mò với các mẫu mã có lẽ? – RIAstar

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