![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2008
Сообщений: 36
|
var container : Sprite = new Sprite();
//container.cacheAsBitmap = true;
addChild(container);
for (var i:Number = 0;i<40;i++) {
var circle : Sprite = new Sprite();
circle.graphics.beginFill(Math.random()*0xFFFFFF);
var xpos : Number = Math.random()*200;
var ypos : Number = Math.random()*200;
var radius : Number = Math.random()*10+10;
circle.graphics.drawCircle(xpos,ypos,radius);
circle.graphics.endFill();
container.addChild(circle);
}
var masker : Sprite = new Sprite();
masker.graphics.beginFill(0xFF0000);
masker.graphics.drawRect(0,0,100,100);
masker.graphics.endFill();
masker.x = 0;
masker.y = 0;
container.mask = masker;
masker.x = 0;
stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDownHandler)
function onKeyDownHandler(e : KeyboardEvent) {
if (e.keyCode == Keyboard.RIGHT) {
masker.x+=10;
trace(masker.x);
}
if (e.keyCode == Keyboard.LEFT) {
masker.x-=10;
trace(masker.x);
}
}
На кнопки влево\вправо двигаем маску и следим за происходящим. С текущим кодом ничего двигаться не будет, но стоит лишь раскомментировать вторую строчку и все работает. Кто-нибудь знает почему - так? ![]() |
|
|||||
|
вообще странно очень что у тебя этот код заработал даже при
container.cacheAsBitmap = true; ты забыл поаставить addChild(masker); вместо последнего masker.x = 0; а вместо var masker : Sprite = new Sprite(); я бы посоветовал писать var masker : Shape = new Shape(); |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 36
|
Цитата:
|
|
|||||
|
незачто
|
|
|||||
|
Регистрация: Jan 2008
Сообщений: 36
|
Цитата:
|
|
|||||
|
сделай как я писал выше и всё заработает - проверял лично.
а без этого никак - тут идёт обработка двух дисплеев как бы.. к тому же чем тебе мешает добавление маски которой всёравно не видно, не пойму. из хелпа To indicate that a display object will be the mask for another display object... Последний раз редактировалось DRAGOnoid; 20.01.2008 в 02:51. |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 36
|
Цитата:
Цитата:
Цитата:
Цитата:
Последний раз редактировалось ign; 20.01.2008 в 02:55. |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 1
|
А у меня еще один похожий вопрос. Приведу пример попроще.
// Circle это некий символ из библиотеки. var mask:MovieClip = new Circle(); var symb:MovieClip = new Circle(); symb.mask=mask; // функция, двигающая маску. function func(){ mask.y+=10; trace("маска сдвинута"); } Если вызывать функцию например следующим образом: setInterval(func, 500); то маска также не будет двигаться. Если написать как сказал ign: symb.cacheAsBitmap=true то все будет впорядке, и мне тоже интересно почему так происходит. Но меня интересует еще вот что - если просто несколько раз подряд вызвать функцию: то маска будет двигаться даже без symb.cacheAsBitmap=true. Почему при непосредственном вызове функции все работает, а при вызове через setInterval() или через обработчик ничерта не происходит!? |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:35. |
|
|
« Предыдущая тема | Следующая тема » |
|
|