질문과 답변

Extra Form
함수설명
$la_delay
$lb_delay
$lc_delay
$ld_delay
$le_delay
$lf_delay
$lg_delay
인풋된 스킬 단축 아이콘의 순서이며
255 * (현제 감소중인 해당 스킬의 스킬딜래이 / 해당 스킬의 원래 스킬 딜래이)의
값이 각각 들어가 있습니다.(실시간 업데이트)
 
이값들을 opacity 로 하여 스킬을 사용하고 딜레이타임이 생길 때
'Cool time'이라는 아이콘을 원래 스킬 아이콘 위에 띄워줄 의도였습니다만,
제가 짠 것에서는 스킬 하나당 각각의 cooltime 아이콘이 생기는게 아니더군요
처음부터 맵 상단 왼쪽에 coottime이라는 아이콘이 있을 뿐만 아니라,
a스킬을 사용하고 cooltime 아이콘이 생겼다 사라졌다고 가정했을때,
b스킬을 사용하면 b스킬에 아이콘이 생길뿐만 아니라 a스킬에 생겼다 사라진
아이콘이 다시 등장하고 b스킬의 아이콘과 동시에 투명해집니다...
제가원하는건 이게아니라 기타 게임들과 같이 스킬마다 독립적으로 쿨타임 아이콘이 생겼다
지워지는 것인데 말이죠;;ㅠ
어떻게 수정해야 할 지 도와주시면 감사하겠습니다.
그래픽쪽은 아직도..영;; ㅠ

class Scene_Map 
  alias aacthud_main main
  def main
    @ct = Cooltime.new
    aacthud_main    
    @ct.dispose
    @ct = nil
  end 
   
  alias aacthud_update update
  def update
    aacthud_update
    @ct.update
  end
end
 
class Cooltime < Sprite
  include SkillIcon # Rect값이 정의되어있음
  def initialize
    super
    self.bitmap = Bitmap.new(644,482)
    ctbitmap = RPG::Cache.icon('CoolTime')
    self.bitmap.blt(0,0, ctbitmap, Rect.new(0,0,644,482))
    self.x = 0
    self.y = 0   
    self.z = 3020
    self.opacity = 255
  end
 
  def update
    super
    ctupdate
  end
 
  def ctupdate
    return if self.bitmap.disposed?
    bitmap = RPG::Cache.icon('CoolTime')
    if $la_delay >= 0
      self.opacity = $la_delay
      self.bitmap.blt(0, 0, bitmap, RECT_A)
    end
    if $lb_delay >= 0
      self.opacity = $lb_delay
      self.bitmap.blt(0, 0, bitmap, RECT_B)
    end
    if $lc_delay >= 0
      self.opacity = $lc_delay
      self.bitmap.blt(0, 0, bitmap, RECT_C)
    end
    if $ld_delay >= 0
      self.opacity = $ld_delay
      self.bitmap.blt(0, 0, bitmap, RECT_D)
    end
    if $lf_delay >= 0
      self.opacity = $lf_delay
      self.bitmap.blt(0, 0, bitmap, RECT_F)
    end
    if $lg_delay >= 0
      self.opacity = $lg_delay
      self.bitmap.blt(0, 0, bitmap, RECT_G)
    end
    if self.opacity == 0
      dispose
    end
   
  end
 
  def dispose
    if self.bitmap != nil
    self.bitmap.dispose
    end
  end
 
end#c

Who's Lighna

profile

스트레스 받는다.

Comment '10'
  • ?
    허걱 2012.06.04 01:37

    self.opacity = n 일 경우 전체의 투명도가 설정됩니다. (blt 부분만의 투명도가 아닌게 되죠)

    위의 말이 이해된다면 왜 다 같이 그려지는지 알 수 있을듯 하네요.

    왼쪽 위에 아이콘이 그려지는건 initialize 부분에서 그려줬기 때문입니다.


    개인적으로는...
    Cooltime 클래스를 Sprite로 받지 말고 Cooltime 내부의 a ~ g 까지의 sprite 를 만들어서 관리해 주는 식으로 하는게 좋을듯 하네요.

    예를들어서 아래와 같은 식으로...

    class CooltimeManager
       def initialize
         @cooltime = []
         7.times {|i| @cooltime.push(Cooltime.new(i)) }
       end

      def update

        @cooltime.each {|ctime| ctime.update }

      end

      def dispose

        @cooltime.each {|ctime| ctime.dispose }

      end

    end

    class Cooltime < Sprite
       def initialize(type)
         @type = type
         rect = [RECT_A, RECT_B, ... ][type]

         super(Viewport.new(rect.x, rect.y, rect.width, rect.height) )
         self.x, self.y = rect.x, rect.y
         self.bitmap = RPG::Cache.icon('CoolTime')
        end
       def update
         self.opacity = [0, [$la_delay, $lb_delay, ...][@type] ].max
       end
    end

  • profile
    Lighna 2012.06.04 03:43
    Rect = [recta,rectb,rectc,...][2]이라면
    Rect는 rectc값이 되는거군요..? 책에서만보던문법이 보여서 신기하네요..super부분은 잘 모르겠지만 어떻게해야할지 대강 감히 잡힙니다. 친절한답변 감사합니다~
  • ?
    허걱 2012.06.04 09:17

    super 같은 경우는 상위 클래스에 메소드가 정의되어 있을 경우 상위클래스의 메소드를 호출할 때 사용할 수 있습니다...라고 하면 좀 어렵게 보이긴 하는데...
    위에서는 잘못 썼는데...예를들어보면,


    Cooltime < Sprite 를 보면 Cooltime 클래스는 Sprite를 상속받은게 되죠. (Sprite 는 Cooltime 의 상위클래스)
    Sprite 의 initialize메소드의 경우... 지금 보니깐 viewport를 받아주네요.


    위의 경우 Cooltime 에서 initialize 라는 메소드가 재정의 되어 버리게 됩니다.

    initialize 라는게 Sprite 에서 정의되어 있는데 상속받은 Cooltime 에서 다시 정의 해주니깐...


    그래서 상위 클래스의 같은 메소드를 부르고 싶다고 할 경우는
    super(viewport) 등과 같이 super(인자) 의 형식으로 적어줄 경우 상위 클래스의 메소드를 실행하게 되죠.
    super(인자) 의 경우 인자가 없으면 super 만 적어주면 되고 아니라면
    상위 클래스의 메소드에서 필요한 인자를 적어주면 됩니다.

    위에서 잘못 적었다고 했는데
    super(rect.width, rect.height) 가 아니라 super() 혹은 super(viewport) 를 적어줘야 하겠네요.
    (지금 보니깐 그냥 적기만 해서 Bitmap 과 Sprite 를 헷갈렸나 보네요..ㅎㅎ;;)

  • profile
    Lighna 2012.06.04 12:19
    아하.. Rect의 가로길이와 세로길이가 왜 들어가는 줄 몰랐었는데.. 잘못적은거였군요 !.!
  • profile
    Lighna 2012.06.04 15:32

    추가로 질문드립니다 ㅜ dispose 메소드는 self.dispose 를 해야하나요 아니면 self.bitmap.dispose를 해야하나요? 그리고 @cooltime= Cooltime.new(3)이라고 한다면 Cooltime class내부에 있는 initialize(value)<-이곳에 있는 value값에 들어가는건가요..?

  • profile
    습작 2012.06.04 15:52
    그렇습니다.^^
  • ?
    허걱 2012.06.04 16:13
    먼저 value 에 대해서는 말한게 맞습니다.
    Cooltime.new(3) 을 봤을 때... 루비에서 new 라는 메소드를 사용할 경우 해당 클래스의 initialize 라는 함수를 먼저 호출하도록 되어 있습니다. 즉, Cooltime.new(3) 이라고 해주면 Cooltime 클래스의 initialize(value) 라는 함수의 인자값으로 value 부분의 3이 되는거죠.

    그리고 dispose 의 경우 Sprite 클래스에서는 기본적으로 내부 Bitmap (self.bitmap) 까지 dispose 해주는걸로 알고있긴 하지만... 개인적으로는 self.bitmap.dispose 와 self.dispose 까지 같이 사용해 주고 있네요...안하면 뭔가 껄끄러운듯한 느낌이 있어서..ㅎㅎ;;; (둘중 하나만 하고 싶으면 self.dispose 를 사용하면 됩니다.)
  • profile
    습작 2012.06.04 16:21
    아닛! 유령이신가, 폰이신가!
    허걱님, Lighna님 질문과는 상관 없는 이야기 이긴 합니다만,
    RGSS2에서 unicode encoding 하는 방법에 대해서 알려주실 수 있으신지요?
    ruby 1.8x에서는 unicode를 지원하지 않는다고 들었는데, 1.8x에서 unicode encode 하는 방법을 검색을 해봐도 제가 미숙해서인지 잘 모르겠더군요. ;ㅅ; )
  • ?
    허걱 2012.06.04 22:25

    자세한건 저도 잘 모르겠는데... 전에 조합한글 만들면서 알았던건 있습니다.
    [44912].pack('U*')
    위와 같이 해줄 경우 유니코드로 패킹할 수 있더군요.
    [배열].pack('U*') 에서 U 가 나타내는것이 UTF-8 로 알고 있습니다.
    UTF-8이 유니코드 형식을 말하니깐 위와 같은 방식으로 하는게 맞을듯 하네요.^^;

  • profile
    습작 2012.06.04 23:29
    좀 더 공부해 봐야 할 것 같네요. 답변 감사합니다.^^

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12448
RMVX 랜덤 카운트 할 줄 아시는분? 2 에드문드 2016.03.25 137
RMVXA 타일을 새로 추가했는데 안움직여요. 1 A구몽 2016.06.16 137
RMMV 이건 버그인가요? 3 file 잠행인 2016.07.28 137
RMVXA 스킬 시전시 플레이어의 입력을 받게 하고 싶습니다. 4 도파민 2017.07.24 137
RMVXA 이름 입력의 처리 2 Arees 2017.02.20 137
RMVX 안티 렉 스크립트 오류가 있어요 file 후라이팬샷 2017.05.18 137
RMVXA 글씨 크기가 찌그러지는 현상 1 file 겜맨602 2017.08.01 137
기본툴 사용법 RMMV (해결/사랑합니다)배경음악 ogg, m4a로 아무리 넣어도 플레이가 안됩니다 5 chiithecat 2019.10.05 137
스크립트 사용 RMVXA 랜덤으로 타이틀 화면이 바뀌는 vxace 스크립트 있나요? 싸코 2020.06.28 137
이벤트 작성 RMMZ 인벤토리에 아이템 이미지 순서대로 채워지는 시스템 이벤트로 작성이 가능할까요? file yellowcat 2022.09.02 137
RMVXA 메세지 창을 띄워 놓은 채로 조작 가능하게 2 2016.07.12 138
RMVXA 문자입력 한글화 질문 입니당 4 file 파랑빛 2016.07.15 138
RMVXA VXA 환경변수 취득 관련 질문을 하고 싶어요! 2 file 안모리 2018.04.30 138
기타 RPG MAKER fksmxm 라는 툴을 소개 받았는데 , 이 게임툴은 자바스크립트만 지원하나요 ?? 1 유아린 2016.12.31 138
플러그인 추천 RMMV 캐릭터 별로 능력치 성장을 다르게 할 수 있는 플러그인이 있나요? 1 PPPL 2020.05.27 138
기타 이게 원래이런건가요? 3 file 국허 2015.05.23 138
RMVXA protection error 103이라는 에러가 떠요 file Mixnuts 2015.05.11 138
RMVXA 대쉬 기능 사용 시 적의 이동속도가 빠르게 변하는 법 2 707 2018.08.19 138
기타 RMMZ 현실 시간에 맞춘 이벤트에 관하여 2 레기우스州 2021.02.22 138
RMVXA 설정해놓은 것과 다른 그래픽이 나옵니다. 2 file 에이스 2015.01.15 138
Board Pagination Prev 1 ... 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 ... 516 Next
/ 516