질문과 답변

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 13180
RMXP RMXP 크로노트리거 메뉴 관련 오류. 3 file Lighna 2012.06.08 1032
RMVXA 문장의표시에서 액터얼굴표기하는거 질문있어요 2 gor 2012.06.08 2109
RMXP RPGXP 오류 1 긔염둥이♥ 2012.06.08 2114
RMVX tankentai프로젝트내의 레벨변수 장애 원인을 찾아냈습니다. 허나 질문이 있어요. 5 file 톰소여동생 2012.06.08 1720
RMXP 액알 장거리 공격 1 오매갓 2012.06.08 2271
RMVX 변수조작에서 각 액터의 레벨에 변수대입이 되지 않습니다. 6 file 톰소여동생 2012.06.08 1506
사이트 이용 rpg vx ace다운 어케해여? 4 폭염 2012.06.07 3744
RMVXA ace에서 문장의 표시에서 특정액터의 얼굴 출력하는 방법 없을까요? 1 gor 2012.06.07 2032
RMVX 공격이 미스 되었을 때 애니메이션 효과 없애기 1 존스노우 2012.06.06 1633
RMVX 전투불능되면 장소이동되게 안되나여? 3 빠세 2012.06.06 1289
RMVXA vx ace 주인공선택 스크립트인데요.....질문있습니다 2 gor 2012.06.06 857
RMVX vx 스크립트 오류인가 .. 충돌인가 애매하네요 4 file 간당께 2012.06.06 1397
RMVX 스킬만드는데 막혀요 스크립트조작 방법좀 가르쳐 주실분 바론아벨 2012.06.06 1319
RMVX 스킬 필요조건 관련 스크립트를 조정하고 싶습니다. 3 톰소여동생 2012.06.05 1868
RMVX 저에게는 브금이 잘 나오는데 게임을 받은사람은 브금이 나오지않아요 춰억헐릿 2012.06.05 1197
기타 조작키가 먹히지 않아요 야묘 2012.06.05 3275
RMVX tankentai sbs에서 주인공의 상태이상 아이콘을 3개 이상 보이게 하고 싶습니다. 2 톰소여동생 2012.06.05 1413
RMVX sbabs스크립트에서 적 몬스터의 대각 이동을 가능토록 할 방법이 없을까요? 1 닉네임은2와20 2012.06.05 1306
기타 질문했었던 컨스 프로젝트입니다. file Lighna 2012.06.05 982
RMXP RMXP 스프라이트 관련 질문..ㅜ 10 Lighna 2012.06.04 1425
Board Pagination Prev 1 ... 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 ... 517 Next
/ 517