Comments 10
UFO landed and left these words here
если вы ещё не забыли, то я всё ещё обещаю купить версию редактора, как только она будет поддерживать настройку способа отображения скобок, на том-же уровне или нет. Я не вижу никаких проблем в этом, т.к. код у вас хранится не как текст, отображение не связано со структурой хранения.
Люблю Ваши разработки, но можно рядом с кодом Realaxy писать нативный код as3, который генерируете? Для сравнения, скажем так (в качестве генерируемого кода я, впринципе, не сомневаюсь).
Сгенеренный код для «бесконечного цикла» link
Сгенеренный код для композитного события link
Сгенеренный код «кто хочет стать миллионером»

package eventsFlow{

import mx.controls.Button;
import com.realaxy.actionScript.eventsFlow.util.EventsFlowContext;
import flash.utils.setTimeout;
import com.realaxy.actionScript.eventsFlow.util.EventQuery;
import flash.events.MouseEvent;
import flash.utils.Dictionary;
import com.realaxy.actionScript.collections.util.CollectionsLanguageUtil;
import flash.display.Sprite;

public class MillionaireGame extends Sprite {
private var errorFlag : Boolean ;
private var cancelFlag : Boolean ;
private var friendButton : Button ;
private var answerButton : Button ;
private var phoneButton : Button ;
public function MillionaireGame( ){
millionaire();
}
public function millionaire ( ) : void {
var __eventFlowUniqueId : int = EventsFlowContext.newFlow("1066125970159108107");
var __eventsFlowThis : MillionaireGame = this;
// millionaire game start
// expire(10000)
var counter_1066125970159109905 : int = EventsFlowContext.getBlockExecutedCount(__eventFlowUniqueId);
setTimeout( function ( ) : void {
if ( EventsFlowContext.getBlockExecutedCount(__eventFlowUniqueId) == counter_1066125970159109905 ) {
EventsFlowContext.destroyCurrentQueryListeners(__eventFlowUniqueId);
EventsFlowContext.executeNextCodeBlock(__eventFlowUniqueId);
{
EventsFlowContext.exit(__eventFlowUniqueId, "loose");
return ;
}
}
}, 10000);
EventsFlowContext.addCodeBlock(__eventFlowUniqueId, function ( ) : void {
{
EventsFlowContext.setNewQuery(__eventFlowUniqueId, new EventQuery("1684146993529417500", new Array(new EventQuery("1066125970159110632", new Array(new EventQuery("1066125970159193039", new Array(), com.realaxy.actionScript.eventsFlow.util.EventsQueryStrategy.CATCH), new EventQuery("1066125970159207118", new Array(), com.realaxy.actionScript.eventsFlow.util.EventsQueryStrategy.CATCH)), com.realaxy.actionScript.eventsFlow.util.EventsQueryStrategy.OR)), com.realaxy.actionScript.eventsFlow.util.EventsQueryStrategy.COMPOSITE));
(EventsFlowContext.catchEvent(__eventFlowUniqueId, friendButton, "click", function ( event_a0a0a0a1a0a6a0 : MouseEvent ) : void {
try {
var count_a0a0a0b0a0g0a : int = EventsFlowContext.getBlockExecutedCount(__eventFlowUniqueId);
{
EventsFlowContext.jump(__eventFlowUniqueId, "callToFriend");
return ;
}
} finally {
if ( count_a0a0a0b0a0g0a == EventsFlowContext.getBlockExecutedCount(__eventFlowUniqueId) ) {
EventsFlowContext.executeQueryById(__eventFlowUniqueId, "1066125970159193039");
}
}
}, "7581117113012050904", "1684146993529417500"), null);
(EventsFlowContext.catchEvent(__eventFlowUniqueId, answerButton, "click", function ( event_a1a0a0a1a0a6a0 : MouseEvent ) : void {
try {
var count_b0a0a0b0a0g0a : int = EventsFlowContext.getBlockExecutedCount(__eventFlowUniqueId);
if ( validateAnswer() ) {
{
EventsFlowContext.exit(__eventFlowUniqueId, "win");
return ;
}
}else{
EventsFlowContext.exit(__eventFlowUniqueId, "loose");
return ;
}
} finally {
if ( count_b0a0a0b0a0g0a == EventsFlowContext.getBlockExecutedCount(__eventFlowUniqueId) ) {
EventsFlowContext.executeQueryById(__eventFlowUniqueId, "1066125970159207118");
}
}
}, "7581117113012050911", "1684146993529417500"), null);
return ;
}
}, "");
EventsFlowContext.addCodeBlock(__eventFlowUniqueId, function ( ) : void {

{
EventsFlowContext.jump(__eventFlowUniqueId, "callToFriend");
return ;
}
EventsFlowContext.executeNextCodeBlock(__eventFlowUniqueId);
}, "");
EventsFlowContext.addCodeBlock(__eventFlowUniqueId, function ( ) : void {
// state: callToFriend

// expire(30000)
var counter_1066125970159230851 : int = EventsFlowContext.getBlockExecutedCount(__eventFlowUniqueId);
setTimeout( function ( ) : void {
if ( EventsFlowContext.getBlockExecutedCount(__eventFlowUniqueId) == counter_1066125970159230851 ) {
EventsFlowContext.destroyCurrentQueryListeners(__eventFlowUniqueId);
EventsFlowContext.executeNextCodeBlock(__eventFlowUniqueId);
{
EventsFlowContext.exit(__eventFlowUniqueId, "loose");
return ;
}
}
}, 30000);
{
EventsFlowContext.setNewQuery(__eventFlowUniqueId, new EventQuery("1684146993529417506", new Array(new EventQuery("1684146993529417503", new Array(new EventQuery("1066125970159230867", new Array(), com.realaxy.actionScript.eventsFlow.util.EventsQueryStrategy.CATCH)), com.realaxy.actionScript.eventsFlow.util.EventsQueryStrategy.AND)), com.realaxy.actionScript.eventsFlow.util.EventsQueryStrategy.COMPOSITE));
(EventsFlowContext.catchEvent(__eventFlowUniqueId, phoneButton, "click", function ( event_a0a0a0f0b0a0i0a : MouseEvent ) : void {
EventsFlowContext.executeQueryById(__eventFlowUniqueId, "1066125970159230867");
}, "1066125970159230867", "1684146993529417506"), null);
return ;
}
}, "callToFriend");
EventsFlowContext.addCodeBlock(__eventFlowUniqueId, function ( ) : void {
{
EventsFlowContext.jump(__eventFlowUniqueId, "answer");
return ;
}

{
EventsFlowContext.jump(__eventFlowUniqueId, "answer");
return ;
}
EventsFlowContext.executeNextCodeBlock(__eventFlowUniqueId);
}, "");
EventsFlowContext.addCodeBlock(__eventFlowUniqueId, function ( ) : void {
// state: answer

if ( validateAnswer() ) {
{
EventsFlowContext.exit(__eventFlowUniqueId, "win");
return ;
}
}else{
EventsFlowContext.exit(__eventFlowUniqueId, "loose");
return ;
}
EventsFlowContext.exit(__eventFlowUniqueId, null);
}, "answer");
EventsFlowContext.executeNextCodeBlock(__eventFlowUniqueId);
}
public function validateAnswer ( ) : Boolean {
return false ;
}
}
}
Зря все же сюда кинул, лучше в виде картинки, хабр не отформатировал отступы почемуто
ну, код уже был вставлен в любимый редактор AS3 и отформатирован, так что финальная цель достигнута )))

Ещё вопрос — в примере кода в топике, блок answerButton.event(MouseEvent.CLICK), судя по логике остального кода, должен был идти jump answer;, я так понимаю? Случайно заметил )
Вначале имено так сделал, но тааймер то не отключается в этом случае. Все в пределах 10 секунд должно быть. Вот и зарефакторил :) Но 100 процентов за соответсвие игровым правилам в примере не могу отвечать :)
В смысле нужно нажать кнопку и ответить в пределах 10 секунд. Поэтом нужно было бы вычислять оставшееся время на ответ. Проще просто вставить провеку в данную точку.
Мне кажется, лучше код состояний вынести в отдельный блок:

state callToFriend {
  if (validateAnswer()) {
    exit win;
  } else {
    exit loose;
  }
}
Only those users with full accounts are able to leave comments. Log in, please.