질문과 답변

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 12447
스크립트 작성 RMMV 변수에 따라 표시이미지를 다르게 띄우고 싶습니다 1 file 도Vㅏ킨 2024.06.23 11
스크립트 추천 RMVXA 미니게임을 하는동안 위에 점수판을 띄워주고싶은데 방법이 없을까요? 홍홍이1 2024.02.07 15
이벤트 작성 RMVXA 스위치가 꺼질 경우 이미지를 끄게 하고 싶습니다. 1 Payroy 2024.01.05 16
에러 해결 RMMV bgm파일이 뜨지를 않아요 1 초본 2024.01.10 16
이벤트 작성 RMMV 보트가 움직여지지 않습니다. 3 file pokapoka 2024.02.19 17
맵배치 RMXP 맵칩 버그 ssplokks 2023.10.20 18
에러 해결 RMVXA rgss301파일이 복사 붙여넣기가 안됩니다 다크크리에이터 2023.11.16 18
액션 전투 RMMV 메인 메뉴 혹은, 현재 메뉴 화면을 새로고침 할 수 있는 방법이 궁급합니다. 니노미야 2023.11.20 18
퀘스트 작성 RMVXA 연타 이벤트가 안 작동되어요... 1 file tokki 2023.12.24 18
기본툴 사용법 RMVXA 특정 맵에서 플레이어가 움직이지 않습니다. 유_ 2023.12.25 19
기타 RMVXA 대사 글꼴 바꾸는법좀 알려주세요 ㅠ 극세사이불 2024.02.26 20
기본툴 사용법 RMMV 분명히 배경음악 m4a+ogg 파일 둘 다 넣었는데 게임 툴에서 인식을 못합니다 파트로클로스 2023.12.08 21
기타 RMMV 색조변경이 적용되지 않는 이벤트 무명시절 2023.01.08 21
스크립트 사용 RMVXA 전투 개시시 상태 부여 스크립트 질문 AAAA. 2023.11.14 21
기타 RMMZ 그림을 클릭하면 이벤트 발생 1 Sian 2024.02.07 22
이벤트 작성 RMVXA 대화 중 이벤트 멈춤 해결 방안 질문 1 이름뭐하지 2024.05.19 22
게임 배포 RMMZ 여러분들 게임 파일 단일화 어떤 프로그램으로 하시나요? 하라아아암 2023.11.22 22
에러 해결 RMXP BGM을 발견못하는 오류 file wombat 2024.01.31 22
기타 RMMV 플레이어가 팔로어를 바라보고 있다라는 스크립트를 찾고 있습니다 무명시절 2024.01.04 23
기타 RMMZ RPG maker MZ는 어디서 구입하는게 가장 이득일까요? 2 아방스조아 2024.06.22 23
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 516 Next
/ 516