on the MAC platform after the installation of Creator, open the project, the window can not be displayed
Drag the CocosCreator.app from the DMG into the application, and then open it.
How do I configure the directory structure generated after build and automatically modify the contents of the built file
Please refer to Custom Project Build Process.
The object associated with the component cannot be found after the build, or the warning cannot find the type
The specified module may be excluded, please check the Module Config in the Main menu -> project -> Project Settings
.
Modify libraryPath
and rawAssetsBase
parameter in main.js
to any path.
Screenshot method: monitor cc.Director.EVENT_AFTER_DRAW
event, calling cc._canvas.toDataURL()
In the callback to get a screenshot of the Base64 format.
For details, please refer to 07_capture_texture in the example-cases, which shows how to take a screenshot and save on three different platforms.
Locate the call cc.view.enableAutoFullScreen
in main.js
and change the incoming parameters to false
.
If frame animations are different in size for each frame, an offset occurs when the animation is played
Please refer to: Sprite Animation with offset.
This is due to the color channel and background colors did the interpolation when bilinear filtering, the simpler way is to use the pre-multiply. Pre-multiplication requires that the blending mode of the Sprite component be set to SRC: ONE, DST: ONE_MINUS_SRC_ALPHA
, and then process the original image.
There are two ways to deal with the original, one is to add a black background under the color channel when the picture is exported, and the transparent channel remains unchanged. The other way is to call texture.update({premultiplyAlpha: true})
to texture in code, if the call fails, it may be an older version of Creator and the old version needs to use texture.handleLoadedTexture(true)
.
Create Prefab:
Editor.Ipc.sendToPanel('scene', 'scene:create-prefab', node.uuid, 'db://assets/xxx/xxx.prefab');
Enter Prefab edit mode:
Editor.Ipc.sendToAll('scene:enter-prefab-edit-mode', assetUuid);
Save Prefab:
Editor.Ipc.sendToPanel('scene', 'scene:apply-prefab', node.uuid);
Please upgrade to the version after 1.8.2.
When you load a picture, the URL is missing such as .png suffix, cc.loader.load
needs to be changed to incoming { url: url, type: "png" }
.
For details, please refer to the dragonBones/DragonMesh in the example-cases.
var animNode = new cc.Node();
animNode.parent = cc.find('Canvas');
var dragonDisplay = animNode.addComponent(dragonBones.ArmatureDisplay);
var image = 'http://localhost:7456/res/raw-assets/eee_tex-1529064342.png';
var ske = 'http://localhost:7456/res/raw-assets/eee_ske-1529065642.json';
var atlas = 'http://localhost:7456/res/raw-assets/eee_tex-1529065642.json';
cc.loader.load(image, (error, texture) => {
cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {
var atlas = new dragonBones.DragonBonesAtlasAsset();
atlas.atlasJson = atlasJson;
atlas.texture = texture;
var asset = new dragonBones.DragonBonesAsset();
asset.dragonBonesJson = dragonBonesJson;
dragonDisplay.dragonAtlasAsset = atlas;
dragonDisplay.dragonAsset = asset;
dragonDisplay.armatureName = 'box_anim';
dragonDisplay.playAnimation('box_anim', 0);
});
});
});
var animNode = new cc.Node();
animNode.parent = cc.find('Canvas');
var dragonDisplay = animNode.addComponent(dragonBones.ArmatureDisplay);
var image = 'http://localhost:7456/res/raw-assets/eee_tex-1529064342.png';
var ske = 'http://localhost:7456/res/raw-assets/eee_ske-1529065642.dbbin';
var atlas = 'http://localhost:7456/res/raw-assets/eee_tex-1529065642.json';
cc.loader.load(image, (error, texture) => {
cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
cc.loader.load({ url: ske, type: 'bin' }, (error, dragonBonesBin) => {
var atlas = new dragonBones.DragonBonesAtlasAsset();
atlas.atlasJson = atlasJson;
atlas.texture = texture;
var asset = new dragonBones.DragonBonesAsset();
asset._nativeAsset = dragonBonesBin;
dragonDisplay.dragonAtlasAsset = atlas;
dragonDisplay.dragonAsset = asset;
dragonDisplay.armatureName = 'box_anim';
dragonDisplay.playAnimation('box_anim', 0);
});
});
});
var spineNode = new cc.Node();
var skeleton = spineNode.addComponent(sp.Skeleton);
this.node.addChild(spineNode);
var image = "http://localhost/download/spineres/1/1.png";
var ske = "http://localhost/download/spineres/1/1.json";
var atlas = "http://localhost/download/spineres/1/1.atlas";
cc.loader.load(image, (error, texture) => {
cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
cc.loader.load({ url: ske, type: 'txt' }, (error, spineJson) => {
var asset = new sp.SkeletonData();
asset.skeletonJson = spineJson;
asset.atlasText = atlasJson;
asset.textures = [texture];
asset.textureNames = ['1.png'];
skeleton.skeletonData = asset;
});
});
});
var spineNode = new cc.Node();
var skeleton = spineNode.addComponent(sp.Skeleton);
this.node.addChild(spineNode);
var image = "http://localhost/download/spineres/1/1.png";
var ske = "http://localhost/download/spineres/1/1.skel";
var atlas = "http://localhost/download/spineres/1/1.atlas";
cc.loader.load(image, (error, texture) => {
cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
cc.loader.load({ url: ske, type: 'bin' }, (error, spineBin) => {
var asset = new sp.SkeletonData();
asset._nativeAsset = spineBin;
asset.atlasText = atlasJson;
asset.textures = [texture];
asset.textureNames = ['1.png'];
skeleton.skeletonData = asset;
});
});
});
Please refer to this example: https://github.com/cocos-creator/load-remote-plist.
After the engine is customized, open the engine/gulp/util/utils.js
script, at the bottom there is a uglify
function. You can modify its parameters according to the requirements. If you want to completely skip the uglify
operation, you can replace the contents of the uglify
section directly with:
const Es = require('event-stream');
return Es.through();
In the main process, use Editor.assetdb.create(url, data, callback)
. The first argument is db://assets/xxx.png
, and the second argument is the buffer read by the .png file.
Editor.assetdb.refresh()
provides a way to manually refresh the asset database.
The Google Play statement began in August 2018, newly submitted app must be compiled with API level 26 and above. When Android builds, the three version numbers are set as follows:
-
compileSdkVersion
Compile version: The version of the SDK used to compile the Java code, regardless of the minimum supported version. Can be set to 26/27/28. -
minSdkVersion
The minimum version supported: Decide to compile the minimum supported Android version of the app. Recommended set to 16 (Correspondence Android 4.0) -
targetSdkVersion
Related to the behavior of the runtime. The recommended setting is consistent withcompileSdkVersion
, or it can be set to 22 to avoid Request App Permissions.
You can customize and recompile in the engine script engine/external/box2d/box2d.js
, the b2_maxTranslation
parameter is the maximum linear velocity of Rigidbody, and the default value is 2, which can be modified to your needs.
It is possible that an incorrect scene data was accidentally saved when the editor has an error, resulting in the value of _children
in the scene file to be incorrectly saved as null
. You can use the any text editor to open the .fire
file corresponding to the scene and change it to []
.
HTML only supports MP4 encoded as H.264 format, please check the video format.
When running or previewing, the color of Creator's built-in profile information doesn't display well
You can customize and recompile the engine, to modify the color used in the profiler. Find the generateNode
method in the engine/cocos2d/core/utils/profiler/CCProfiler.js
and set the color of LEFT-PANEL and RIGHT-PANEL nodes to your needs.
Note that you should call widget.updateAlignment();
to request the Widget refresh immediately.
Listening to multi-touch events, suppose there are two points A and B, hold down B, after repeatedly clicking A, release B but no "touchend" event received.
Just set a larger value to cc.macro.TOUCH_TIMEOUT in the outermost scope of any script in the project. Note that the code should be placed in the outermost scope, not in any class functions such as onLoad
/ start
.
The diffuse texture can be modified by using setProperty
in this way:
material.setProperty("diffuseTexture", texture);
For details, please refer to the custom_material in the example-cases.
The parameters passed in for this.unschedule(callBack, target)
must be consistent with those passed in for this.schedule(callBack, target)
. That is, the callBack
must be the same function object, and the target
must also be the same object. If the parameters passed in are different, the scheduler cannot be stopped properly.
When playing Web Audio on the iOS browser, if you switch the foreground and background, it is likely that you cannot pause and resume playback normally
This problem is caused by the AudioScheduledSourceNode
of Web Audio. The suspend
method of WebAudioContext
only pauses the specified Audio on the Web Desktop, but pauses all Audio on the Web Mobile. Therefore, fixing this problem on the engine is too hack and not universal enough, it will not be repaired. Developers can fix it by adding the following code to the project script:
if (cc.sys.isBrowser && cc.sys.os === cc.sys.OS_IOS) {
cc.game.on(cc.game.EVENT_GAME_INITED, () => {
cc.game.on(cc.game.EVENT_SHOW, () => {
cc.sys.__audioSupport.context.resume();
});
cc.game.on(cc.game.EVENT_HIDE, () => {
cc.sys.__audioSupport.context.suspend();
});
})
}