R0J0hound's Recent Forum Activity

  • You do not have permission to view this post

  • You need to specify the folder in with the sound name then. It probably says that in the manual. So if it’s in a folder called duck, the name would be “duck\quack.mp3”

  • That would perhaps work with a monospaced font. In general most fonts are variable width.

    I like formulas, but something like this doesn’t reduce to one. You can put it all in a function to reuse it though

  • Only idea that comes to mind is to use a tiledbackground object and use the "set face object" from the 3dshape with that.

  • There's no formula, you'll have to use a loop one way or another. Usually you'd use tokenat to get a word at a time, then you'd measure the width of the text somehow and finally add newlines if you exceed a maxwidth. Rough pseudo code of how that may look is here. There are ways it can be improved.

    var x=0
    var maxwidth=100
    var textInput="some kind of text"
    var textOutput=""
    var word=""
    
    start of layout
    repeat tokencount(textInput, " ") times
    -- set word to tokenat(textInput, loopindex, " ")
    -- add measure(word&" ") to x
    -- compare x > maxwidth
    -- -- add newline to textOutput
    -- -- set x to 0
    -- add word&" " to textOutput
    

    The measure function isn't actually in construct. To measure the text it will depend on how you are displaying text.

    If using the text object the best you have is the Text.textwidth expression but that is only updated when the object is drawn. But Javascript can be used to measure the text. Basically in javascript create a html canvas with a 2d context, set the font, and then use context.measureText(text).width. The main thing you'll have to deal with is the font sizes will be different so the font size will have to be scaled somehow. I can't find an example where I figured that one out.

    With spritefonts it can be easier. It has the spritefont.CharacterWidth(char) expression, but since it only measures a character at a time you'll have to use a loop to add the widths up for the whole word. You can also take advantage of mono spaced spritefonts by calculating the width=len(word)*charwidth.

    An alternate way is to use texture atlas of a font and a json of the widths and where to find the letters.

    Anyways here is a c3p that does the text wrapping manually with the last idea. The logic would basically be the same for the others. I don't have any examples for the other object types.

    dropbox.com/s/67ukw6bak4gvq41/no_dom_text_scroll.c3p

    For simple I often I just use the automatic text wrapping used in the text and spritefont objects. Worst case you can just add the newlines yourself to the text you're using if the automatic stuff isn't satisfactory. Those are the only simple solutions I know

  • Looks like you can’t get the pixels per inch (ppi) of the screen with JavaScript.

    If you could then this would be the calculation.

    Meters = Pixels*ppi* 0.0254

    Best we can do is illustrated by this site

    ruler.onl

    Basically there needs to be a calibration step where the user has to input the measurement of the screen.

  • Well width=right-left. When no scrolling is done then width=left+right but only at that spot.

    To center something you’d set x to (left+right)/2 or left+width/2

  • I like dops idea better. Much cleaner.

    I’m not able to open your project right now but I’m assuming the canvas’ origin is centered. This will give an xy that can be directly used to draw to the canvas. No need to subtract the bboxtop and such.

    Tx = (touch.x-canvas.x)*cos(-canvas.angle) - (touch.y-canvas.y)*sin(-canvas.angle) - canvas.width/2

    Ty = (touch.x-canvas.x)*sin(-canvas.angle) + (touch.y-canvas.y)*cos(-canvas.angle) -canvas.height/2

  • So what doesn’t that code you have not do? Any errors show up in the browsers console?

  • I guess look at your use of substring. Just curious why this is needed, you can already paste with ctrl+v or right click and select paste.

  • I’m guessing you’re using the textInput object? First step would be to get the cursor position. If construct doesn’t provide an expression for that you can use js to get that since textInput is an html dom element.

    Anyways you’d then use the len,left and right expressions to insert text.

    Set text to left(textInput.text, pos)&"inserted"&right(textInput.text, len(textInput.text)-pos)

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • X=50+(loopindex%15)*50

    Y=50+int(loopindex/15)*50

R0J0hound's avatar

R0J0hound

Member since 15 Jun, 2009

Twitter
R0J0hound has 155 followers

Connect with R0J0hound