2011-12-29 40 views
0

我对AS3非常陌生。针对对象的AS3 CSS类类

我想给MC中的某些对象“类”(意思是类的CSS类)翻转。所以我可以自动创建一个rollOver,它可以淡化所有声明为rollOver对象的对象。

的jQuery〔实施例

$("#myObject .rollOverObject").animate(...); 

什么是实现类似的东西在AS3的最佳方式?

在此先感谢您,并致以最诚挚的问候。

+1

我认为这可能是时候学习*新*范式... – 2011-12-29 13:56:58

回答

2

AS3中没有CSS类。然而,你可以做的是在MC上创建一个EventListener并在那里做你的动画。它看起来像这样。

for (var i : int = 0; i < mcContainer.numChildren; i++) 
{ 
    // reference to a child of the container 
    var mcChild:MovieClip = mcContainer.getChildAt(i) as MovieClip; 

    // validate by name 
    if(mcChild.name == "something you want to check") 
    { 
     mcChild.addEventListener(MouseEvent.ROLL_OVER, onMcRollOver); 
    } 
} 

function onMcRollOver(event:MouseEvent) : void 
{ 
    // create a reference to the MovieClip that is rolled over 
    var mcTarget:MovieClip = event.currentTarget as MovieClip; 

    // do what you like with the mcTarget 
    mcTarget.alpha = 0.5; 
} 

如果您使用的MovieClips,或者不需要ROLL_OVER听众了,那么你可以在simular方式删除这些监听器来完成。

for (var i : int = 0; i < mcContainer.numChildren; i++) 
{ 
    // reference to a child of the container 
    var mcChild:MovieClip = mcContainer.getChildAt(i) as MovieClip; 

    // validate by name 
    if(mcChild.hasEventListener(MouseEvent.ROLL_OVER)) 
    { 
     mcChild.removeEventListener(MouseEvent.ROLL_OVER, onMcRollOver); 
    } 
} 

快速Google search可以帮助您进一步学习。

+0

感谢您的回答。不幸的是我需要动态访问几个对象,而不知道它有多少。有可能通过获取每个MC的列表并检查名称来做到这一点。这样我可以命名rollOver对象rO_ExampleName或类似的东西。有没有像myMovieClip.each()? – matteok 2011-12-29 13:37:17

+0

我更新了我的答案。你可以使用'numChildren'循环播放孩子们。 – 2011-12-29 13:53:41

+0

非常感谢。我最后一个问题有一点偏离主题。如果我用加载器类加载电影,我可以使用myLoader.content来访问它。不幸的是myLoader.content是一个DisplayObject,而不是一个MovieClip,所以如果我使用你建议的循环,我会得到一个错误。有没有解决办法,或者我做错了什么? – matteok 2011-12-29 14:08:54