首先,我创建了一个嵌入式虚拟文件系统,如here所述。
它以代码的形式生成以下代码:
package C_Run {}
package com.adobe.flascc.vfs {
import com.adobe.flascc.vfs.*;
import com.adobe.flascc.BinaryData
public class myvfs extends InMemoryBackingStore {
public function myvfs() {
addDirectory("/data")
addFile("/data/localization.en.afgpack", new C_Run.ALC_FS_6D79766673202F646174612F6C6F63616C697A6174696F6E2E656E2E6166677061636B)
addFile("/data/dataAudio.afgpack", new C_Run.ALC_FS_6D79766673202F646174612F64617461417564696F2E6166677061636B)
addFile("/data/data.afgpack", new C_Run.ALC_FS_6D79766673202F646174612F646174612E6166677061636B)
}
}
}它被编译成myvfs.abc。然后,我尝试使用此VFS创建自定义控制台。我已经在Console.as中导入了myvfs
import com.adobe.flascc.vfs.myvfs;并创建了vfs对象:
var my_vfs_embedded:InMemoryBackingStore = new myvfs(); 因此,问题是编译Console.abc有时会失败并出现错误"Call to a possibly undefined method myvfs“,有时会使用相同的代码成功构建。这怎么可能呢?
Console.abc是通过以下命令构建的:
cd ./../../Engine/library/baselib/sources/flash && \
java -jar $(FLASCC_FOR_EXT)/usr/lib/asc2.jar -merge -md -AS3 -strict -optimize \
-import $(FLASCC_FOR_EXT)/usr/lib/builtin.abc \
-import $(FLASCC_FOR_EXT)/usr/lib/playerglobal.abc \
-import $(GLS3D_ABS)/install/usr/lib/libGL.abc \
-import $(FLASCC_FOR_EXT)/usr/lib/ISpecialFile.abc \
-import $(FLASCC_FOR_EXT)/usr/lib/IBackingStore.abc \
-import $(FLASCC_FOR_EXT)/usr/lib/IVFS.abc \
-import $(FLASCC_FOR_EXT)/usr/lib/InMemoryBackingStore.abc \
-import $(FLASCC_FOR_EXT)/usr/lib/AlcVFSZip.abc \
-import $(FLASCC_FOR_EXT)/usr/lib/CModule.abc \
-import $(FLASCC_FOR_EXT)/usr/lib/C_Run.abc \
-import $(FLASCC_FOR_EXT)/usr/lib/BinaryData.abc \
-import $(FLASCC_FOR_EXT)/usr/lib/PlayerKernel.abc \
-import $(BUILD_FULL_PATH)/myvfs.abc \
Console.as -outdir $(BUILD_FULL_PATH) -out Console发布于 2013-12-04 14:03:51
似乎我的VFS对于编译器来说太大了。当我使用较少的数据时,一切都很好。所以,我认为这是编译器中的一个bug。
发布于 2013-06-05 21:15:48
myvfs.abc位于BUILD_FULL_PATH,暗示它可能与Console.as同时构建。如果构建顺序不是完全可预测的,则在编译Console.as时,myvfs.abc二进制文件可能处于不确定状态。例如,如果您将myvfs.as和Console.as构建为不同的独立目标,并在make (-j)中使用多线程选项,则可能会发生这种情况。
https://stackoverflow.com/questions/16412256
复制相似问题