질문과 답변

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 12392
한글 패치 RMXP rpg xp 한글패치 후 글자가 나오질 않습니다 1 file 핫핑세일 2019.12.04 279
한글 패치 RMVXA RPG VX ACE 한글 패치 3 채토 2019.02.12 798
한글 패치 RM2k 스팀 알만툴 2k는 한글패치가 없나여? 2 태연천사 2019.04.01 317
한글 패치 RMVXA Translator++ invalid multibyte char (utf-8) 오류 (영어겜임) file 진영삼 2019.05.02 428
한글 패치 RMVXA VX Ace툴 스팀 버전 한글패치는 없는 건가요? 자유와바람 2019.11.07 316
한글 패치 RMVXA 지원하지 않는 조작 1 청빛날개 2020.02.04 94
한글 패치 RMXP 스팀 알만툴XP 한글패치 관련 질문입니다 으으으으으으 2020.02.25 338
한글 패치 기타 SRC나 DNML 유저팬픽시나리오MOD제작툴 한글화 하시는분은 없나요? 1 모드좋아 2020.02.27 212
한글 패치 RMVXA RPG MAKER VX ACE 한글패치 관련 문의드립니다ㅠ 2 쇠창살 2020.03.02 456
한글 패치 RMVX vx 한글패치 어떻게 해야 하나요 ㅠㅠㅠ 2 얄라셩 2020.06.05 279
한글 패치 RMXP RPG XP 스팀 한글패치 최신 버전은 없나요? 1 일리브 2020.11.14 657
한글 패치 RM2k3 2003 게임의 글자가 특수문자로 출력됩니다. 1 file 우주신유니콘 2021.03.20 296
한글 패치 RMVXA RPG Maker VX Ace 한글 출력? 1 ikmyung 2021.05.17 302
한글 패치 기타 알만툴 2k 스팀판은 한글패치가 없나요? 김기차 2023.08.28 48
한글 패치 RM2k RM2k의 스팀 한글패치 다크크리에이터 2024.01.27 22
플러그인 추천 RMMV MV 인벤토리 변경하는 플러그인이 있을까요? 2 머리큰두두 2023.09.19 57
플러그인 추천 RMMV 지도의 특정 좌표를 한번에 찾아가는 플러그인은 없을까요? 7 겐마 2020.08.22 123
플러그인 추천 RMMV npc 이동 1 코기 2020.02.09 89
플러그인 추천 RMMV MV에서 대각선이동이 가능한가요? (8방향이동) 6 믕믱이 2020.03.12 769
플러그인 추천 RMMV 이런 플러그인인데 혹시 알고있는 사람 있습니까??? 2 file 호구랑 2019.03.02 240
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 82 Next
/ 82