LoadObject2() -funktio

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
Post Reply
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

LoadObject2() -funktio

Post by Misthema »

CoolBasic:n omalla LoadObject()- ja LoadImage()-funktiollahan ei pysty lataamaan kuin yhden kuvan, tai yhden rivin kuvasarjan.
Nyt olen tehnyt asiaan muutoksen, eli tällä LoadObject2() -funktiolla pystyy lataamaan vaikka TÄLLAISESTA kuvasta yhden hahmon yhteen objektiin.
Määritetään vain monesko kuva halutaan (x,y) ja tietenkin halutun hahmon kuvan koko (_tilesizex, _tilesizey). Ja sitten kaikki onkin valmista. :)

Tässä itse funktio:

Code: Select all

Function LoadObject2(_polku$, _x, _y, _tilesizex, _tilesizey, _round=0, r=0, g=0, b=0)

    temp1 = LoadImage(_polku$)
    MaskImage temp1, r,g,b
    temp3 = MakeImage(_tilesizex, _tilesizey)
    xx = _tilesizex * _x
    yy = _tilesizey * _y
    
    temp2 = MakeObject(_round)
    If _tilesizex > _tilesizey Then
        ObjectRange temp2, _tilesizex
    Else
        ObjectRange temp2, _tilesizey
    EndIf

    'Piirretään napattu kuva
    DrawToImage temp3
        DrawImageBox temp1, 0,0, xx,yy, _tilesizex, _tilesizey
    DrawToScreen
    
    PaintObject temp2, -temp3
    DeleteImage temp1
    DeleteImage temp3
    
    Return temp2
EndFunction
Tässä on tällä hetkellä funktio vain objektien lataamiseen. Teen vielä kuville samanlaisen, ja mahdollistan animoimisen myös. :)
Last edited by Misthema on Sun Jan 13, 2008 9:11 pm, edited 1 time in total.
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: LoadObject2() -funktio

Post by axu »

en vaivautunut testaamaan, jos oikein ymmärsin, niin saman asian ajaa LoadAnimObject, laittaa animaation pituudeksi 1
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
BulletStorm

Re: LoadObject2() -funktio

Post by BulletStorm »

axu wrote:en vaivautunut testaamaan, jos oikein ymmärsin, niin saman asian ajaa LoadAnimObject, laittaa animaation pituudeksi 1
Öh... ei oikeastaan. Siis, jos sulla on kuva jossa on 6 hahmon "objektit", niin tolla voit ladata siitä yhdestä kuvasta kaikki objektit ilman, että joudut leikkaamaan ne irti ja lataamaan erikseen.

Tai no, näin mä ymmärsin.
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: LoadObject2() -funktio

Post by Misthema »

BulletStorm wrote:Öh... ei oikeastaan. Siis, jos sulla on kuva jossa on 6 hahmon "objektit", niin tolla voit ladata siitä yhdestä kuvasta kaikki objektit ilman, että joudut leikkaamaan ne irti ja lataamaan erikseen.

Tai no, näin mä ymmärsin.
Kyllä, ymmärsit ihan oikein. Enkä kyllä mitenkään keksi miten voitte olla ymmärtämättä funktion toimintaa, koska annoin jopa selkeän esimerkki kuvan josta ladataan yksi hahmo...
axu wrote:en vaivautunut testaamaan, jos oikein ymmärsin, niin saman asian ajaa LoadAnimObject, laittaa animaation pituudeksi 1
Ei todellakaan aja samaa asiaa kun LoadAnimObject-komento, koska sillä voi ladata vaan kuvasarjan, jonka kuvat menevät näin:

Code: Select all

    ___________________
1x4|____|____|____|____|
Kun taas LoadObject2:lla voit ladata yhden kuvan tällaisesta:

Code: Select all

    ___________________
4x4|____|____|____|____|
   |____|____|____|____|
   |____|____|____|____|
   |____|____|____|____|
Murskaaja
Member
Posts: 92
Joined: Tue Aug 28, 2007 8:19 pm
Contact:

Re: LoadObject2() -funktio

Post by Murskaaja »

Ihan kiva tuo funktio muuten, mutta kyllä se loadanimobject ajaa ihan saman asian. Kokeilepa vaikka seuraavaa sillä esimerkkikuvallasi:

Code: Select all

SCREEN 400,400
Dim taulukko(87)
y = 160
For i = 0 To 87
    taulukko(i) = LoadAnimObject("media\dg_classm32.png",32,32,i,1)
    x = -112+32*luku
    PositionObject taulukko(i),x,y
    luku+1
    If luku = 8 Then luku = 0 : y-32
Next i
Repeat
    DrawScreen
Forever
Itselläni tuo ainakin toimii :)
ASCII star wars Xtreme | Cool Bombers | Combat (kehitteillä)

RedShadow productions
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: LoadObject2() -funktio

Post by Koodiapina »

Sehän on ihan sama, onko kuvassa yksi vai neljä riviä tilejä tuon latauksen suhteen. Ei kuvasarja sitä tarkoita, että niiden spritejen yhdelle riville pitäisi mahtua.
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: LoadObject2() -funktio

Post by SPuntte »

Muuten jees, mutta pyöritettävyys puuttuu. Tosin se ei ole yhtään hankalaa lisätä.
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: LoadObject2() -funktio

Post by Misthema »

SPuntte wrote:Muuten jees, mutta pyöritettävyys puuttuu. Tosin se ei ole yhtään hankalaa lisätä.
Pyöritettävyys lisätty. :)
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: LoadObject2() -funktio

Post by MaGetzUb »

Jiihaaa, tätä olen odottanu jo pitkään. Tämähän on kätevä ukkojen animoinnissa, eikö? (En ole testannut viälä)
Esim vaikka tekisi isometrisen objektin, ja vaikka siinä olisin sotilas, jossa on joka suunnassa kävely ja ampumis animaatio, niin toimiiko tämä niin?
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: LoadObject2() -funktio

Post by Misthema »

Ei. Tällä hetkellä funktiossa ei ole mitään animointia, mutta eipä kai tuokaan olisi vaikea toteuttaa. :) Voin yrittää väsätä sen sellaiseksi. Jos vaikka sitten olisi edes käytännöllinen ja hyödyllinen. >;G
Post Reply