2011-06-13 12 views
6

Bu kod IDE içinde ince derlemek gibi görünüyor, ama komut satırı derleyici (SDK 4.5 mxmlc.exe) raporları "Parametre başlatıcısı bilinmiyor veya derleme zamanı sabiti değil."Arabirimlerdeki sabit değerleri varsayılan değerler olarak kullanma: IDE tamam ama mxmlc başarısız oluyor mu?

senocular iyi bir açıklama ve bir belki-geçici çözümü verir, ama ben (bir komut satırı talimatı gibi) daha elegent şey için umut ediyorum.

package { 
    public class Constants { 
     public static const CONSTANT : int = 0; 
    } 
} 


package { 
    public interface IInterface { 
      function foo(param : int = Constants.CONSTANT) : void; 
    } 
} 

package 
{ 
    public class Concrete implements IInterface 
    { 
      public function foo(param:int=Constants.CONSTANT):void 
      {   
      } 
    } 
} 
+1

Belki yapılandırma sabitleri deneyebilir? Aklıma http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_21.html – cmann

+0

tek şey derleyici gelmeden önce ön süreci kaynağını kendi parti tipi komut dosyası oluşturmaktır Bu, ama muhtemelen en iyi fikir değildir. Yine de, tüm hataları çözdüğünüzü varsayardım. – Scott

cevap

2

Senoküler'e göre, derleme sırasına göre. Bu siparişi ayarlamanın açık bir yolu yok.

bu sorunu önlemek için define derleyici seçeneği kullanılarak satır içi sabitleri tanımlayabilirsiniz.

bir başka yolu sabitlerini içeren bir kütüphane oluşturmak olacaktır. Kütüphaneler, kullanıcı sınıflarından önce eklenmiştir.

mxmlc -include-libraries lib\Constants.swf -- src\Main.as 

Sadece sabitleri değiştirdiğinizde kütüphane yeniden derlemek için unutmak ya da bir yapı kullanmayın:

compc -output lib\Constants.swf -source-path src -include-classes Constants 

, uygulamayı derlemek o kütüphaneyi şunlardır: kütüphane component compiler kullanmak oluşturmak için Bunu halleden senaryo.


örnek kod üzerinde kısa bir açıklama:
arayüzü, herhangi bir değer yapmak ve sınıfları uygulama aynı etkiye sahip olacağını sabit kullanmaya gerek yoktur.

Programming AS3 - Interfaces

A arayüzü tanımında belirtilen değer ile aynı veri tipi bir üyesi olan bir varsayılan parametre değere sahip olması gerekir, böyle bir işlevi bildirimi uygulayan yöntem, ancak gerçek değeri yoktur eşleştirmek.