DiegoM's Recent Forum Activity

  • In the next beta cycle, a globe icon similar to this 🌍︎ will be used to denote global layers and overridden ones, instead of text.

    There will also be a new context menu option added in the Layers Bar to open the layout which holds an original global layer by right clicking on an overridden one.

  • Make sure you have given C3 permission to use the system clipboard

    support.google.com/chrome/answer/114662

    Under construct.net look for editor.construct.net and in there for the value of Clipboard

  • pikawilliam11

    I too thought that this might be related to Opera GX, so I tried it out... and didn't see any crash. So it might be something very specific to your setup.

    Also, when you take into account that Opera GX is built on Chromium, the open source project which also powers Chrome... it's even less likely that there could be a bug that happens in Opera GX but not in Chrome, because they are essentially the same browser with a different coat of paint.

    None of this is particularly helpful, but I thought to point it out.

  • I have heard from people that the ability to play audio from a timeline is reasonably in sync, but I don't know exactly how the feature is being used.

    Truth is that relying on the timeline play head and the audio that is playing to be in sync is not adviced, if you are looking for high accuracy that is. This is because the timeline basically just acts as a trigger to start playing a sound, after that the audio and the timeline continue doing their own thing separately and parity is not guaranteed.

    The audio tracks serve more as a visual aid to better control when audio will be triggered and as a general guidance on to how long the audio will be playing for, relative to the total timeline time.

    Having said that, you can run your own small tests with the feature and see if it will work for you.

  • The start page received a significant overhaul at the start of 2022.

    All of the example projects can now be found in the example browser which you can find by either clicking on the Browse Examples button in the Start page or through the main menu Menu -> View -> Example Browser

  • This isn't possible, you can however, define your properties in the constructor and initialize them to default values and then define an initialization method that receives your custom data.

    Something like this:

    	class Projectile extends ISpriteInstance {
    		constructor()
    		{
    			super();
    
    			this._foobar = null;
    		}
    
    		Initialize(foobar)
    		{
    			this._foobar = foobar;
    		}
    	}
    

    Then you can do this

    	let projectile = runtime.objects.projectile.createInstance("main",playerObj.x,playerObj.y, true)
    
    	projectile.Initialize(/*your custom data goes here*/);
    
  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Ah ok, I was asking because that fix wasn't specifically related to your issue, so the problem you were having might still persist.

  • Have you tried it out to see if it solved your problem?

  • dop2000

    If I recall correctly I didn't do it the first time around just to get something out.

    In the mean time, it is now possible to copy and paste animations between object types. You can copy them using the context menu options of the animations panel or keyboard shortcuts (make sure focus is on the animations panel by clicking on it), close the Animations editor, open it again for a different object type and paste in the animations panel.

    You can copy individual animations or sub folders.

  • Not really sure exactly how you plan to save and load all the data, but as far as creating inheritances in Javascript, just go with classes.

    Prototype inheritance (and everything surrounding it) is legacy at this point. Classes will do the same (and a few extra things) and are much easier on the eye.

    One thing to note is that, even though prototypes are legacy, they are fully supported, so you can use them if the opportunity arises. If you are still figuring things out though, just go with classes they will likely cover 99% of the cases.

    Depending on your needs you might be able to get away with something easier though.

    If your data objects don't have nested properties (properties which are objects or arrays with more data in them), you can rather easily use Object.assing to create a new object with the properties from a list objects.

    Object.assign(
    // the new empty object were all the properties will be applied
    {}, 
    // The first source object to copy properties from
    {
    	x: 0,
    	y: 1,
    	name: "foo"
    },
    // The second source object to copy properties from
    {
    	name: "bar"
    	damage: 5
    }
    // As many source objects as needed can be added
    );
    

    Something like that, will create a new object that looks like this:

    {
    	x: 0,
    	y: 1,
    	name: "bar",
    	damage: 5
    }
    

    The properties of the first source object are copied into the target (first empty object), then the properties of the second source objects are applied onto it, any existing properties are overwritten and new ones are added.

    Using this approach you can allow the player to select a base item, then a specific one, merge them and the result becomes the new item.

  • Been meaning to respond to this, but just could not write a comprehensive answer.

    The short answer is that there is no built in method to do this with the JSON plugin.

    Any solutions would need to be through Javascript scripting and even then it wouldn't be trivial. Definitely possible, but not obvious.

    What you are describing is basically this

    stackoverflow.com/questions/27936772/how-to-deep-merge-instead-of-shallow-merge

    I think it would be much easier to have a file with the common properties for items, that everything will use, and also properties which refer to specific "classes" of items. Something like this:

    {
    	item: {
    		common: {
    			"a": "common-prop-1",
    			"b": "common-prop-2",
    			"c": "common-prop-3"
    		},
    		classes: {
    			"axe": {
    				"a": "axe-prop-1",
    				"b": "axe-prop-2",
    				"c": "axe-prop-3"
    			},
    			"sword": {
    				"a": "sword-prop-1",
    				"b": "sword-prop-2",
    				"c": "sword-prop-3"
    			},
    			"bow": {
    				"a": "bow-prop-1",
    				"b": "bow-prop-2",
    				"c": "bow-prop-3"
    			}
    		}
    	}
    }
    

    Then have another file with the specific items, which have their own unique properties and an ID to the common properties for the class of item. Something like this.

    {
    	items: {
    		"hand-axe": {
    			"a": "hand-axe-prop-1",
    			"b": "hand-axe-prop-2",
    			"class": "axe"
    		},
    
    		"great-axe": {
    			"a": "great-axe-prop-1",
    			"b": "great-axe-prop-2",
    			"class": "axe"
    		},
    
    		"excellent-axe": {
    			"a": "excellent-axe-prop-1",
    			"b": "excellent-axe-prop-2",
    			"class": "axe"
    		}
    	}
    }
    

    So when you want to look up information for an item, first you look up in the specific file, then you look at what is the "class" of the item, and use that to do another look up in the first file. The common properties don't need a specific lookup, you could just get them because you known before hand every item will have them.

    This could also be arranged in a single file, this was just an example.

DiegoM's avatar

DiegoM

Member since 24 Apr, 2015

Twitter
DiegoM has 1,400,043 followers

Trophy Case

  • 9-Year Club
  • Jupiter Mission Supports Gordon's mission to Jupiter
  • Forum Contributor Made 100 posts in the forums
  • Forum Patron Made 500 posts in the forums
  • Regular Visitor Visited Construct.net 7 days in a row
  • RTFM Read the fabulous manual
  • Email Verified

Progress

15/44
How to earn trophies

Blogs