{"id":235,"date":"2026-03-04T00:11:35","date_gmt":"2026-03-04T00:11:35","guid":{"rendered":"https:\/\/hackcuba.net\/?p=235"},"modified":"2026-03-04T00:11:35","modified_gmt":"2026-03-04T00:11:35","slug":"generacion-de-particulas-i","status":"publish","type":"post","link":"https:\/\/hackcuba.net\/?p=235","title":{"rendered":"Generaci\u00f3n de part\u00edculas (I)"},"content":{"rendered":"\n<p>Cuando aplicamos las ventajas de la orientaci\u00f3n a objetos a los MovieClip de Adobe Flash, nuestros conceptos sobre esta plataforma llegan a cambiar radicalmente. Los trazos vectoriales, los tipos de datos y los elementos multimedia comienzan a interpretarse como parte de una jerarqu\u00eda de objetos, y no aislados como antes. Aqu\u00ed se muestra un ejemplo de c\u00f3mo emplear clases y sus respectivos objetos en ActionScript 2.0.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Para comenzar, se debe abrir un nuevo documento de Flash y dibujar una peque\u00f1a nube blanca sobre un fondo azul cielo. Luego convertirla en un MovieClip y nombrar dicha instancia <code>cloud<\/code>. Posteriormente hacer lo mismo con una peque\u00f1a gota de lluvia, que quedar\u00e1 sin instancias en el escenario, pero vinculada con ActionScript con el identificador <code>drop_symbol<\/code>, referenciando a la clase <code>Drop<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: as3; title: ; notranslate\" title=\"\">\nclass Drop extends MovieClip{\n  \/\/ par\u00e1metros\n  var transparency:Number;\n  var size:Number;\n  var speed:Number;\n\n\n  \/\/ posiciones iniciales de la gota de lluvia\n  var init_x:Number;\n  var final_x:Number;\n  var init_y:Number;\n\n\n  \/\/ funci\u00f3n que retorna un n\u00famero aleatorio entre dos valores extremos\n  function randomize(min_value, max_value) {\n    return (Math.floor(Math.random() * (max_value - min_value + 1)) + min_value);\n  }\n\n\n  \/\/ Constructor\n  public function Drop() {\n    transparency = randomize(0, 70);\n    size = randomize(100,200);\n    this._x = randomize(init_x, final_x);\n    this._y = init_y;\n    this._alpha = transparency;\n  this._yscale = size;\n  }\n\n\n  \/\/ polimorfismo\n  public function onEnterFrame() {\n    this._y += speed; \/\/ go down\n    if(this._y &gt; Stage.height){\n      removeMovieClip(this);\n    }\n    if(_parent.house.hitTest(this._x, this._y + this._height, true) || _parent.chimney.hitTest(this._x, this._y + this._height, true) || _parent.skyline.hitTest(this._x, this._y + 10, true)){\n      this.play();\n    }\n  }\n} \n<\/pre><\/div>\n\n\n<p>Es necesario enfatizar que las clases deben ser guardadas por separadas en archivos de extensi\u00f3n <code>as<\/code>, con el mismo nombre de la clase que albergan y dentro de la misma carpeta del proyecto para que se acceda a ella autom\u00e1ticamente sin tener que acudir a la directiva <code>#include<\/code>.<\/p>\n\n\n\n<p>Cuando tengamos lista la clase, debemos escribir en el <code>_root<\/code> lo siguiente:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: as3; title: ; notranslate\" title=\"\">\nvar _counter:Number = 0; \/\/ contador\nvar _factor:Number = 3; \/\/ factor de incremento del total de gotas\nvar rain_speed:Number = 7;\n\n\nonEnterFrame = function() {\n  for(var i:Number = 0; i &lt; _factor; i++){\n\/\/ adjuntar el MovieClip de la biblioteca, inicializando sus propiedades\n    attachMovie(&quot;drop_symbol&quot;, &quot;drop&quot; + _counter + i, getNextHighestDepth(),{speed:rain_speed, init_x:cloud._x, final_x:cloud._x + cloud._width, init_y:cloud._y});\n  }\n  _counter += _factor;\n\n\n  \/\/ ubicar siempre a la nube por encima de las gotas\n  cloud.swapDepths(getNextHighestDepth());\n}\n\n\n\/\/ Permitir el arrastre de la nube por el escenario\ncloud.onPress = function(){cloud.startDrag();}\ncloud.onRelease = function(){cloud.stopDrag();} \n<\/pre><\/div>\n\n\n<p>Finalmente, si se desea a\u00f1adir elementos al fondo, quiz\u00e1s se logre crear un entorno m\u00e1s din\u00e1mico. En el siguiente n\u00famero de la revista se explicar\u00e1 como, por c\u00e1lculos trigonom\u00e9tricos, se puede crear un Sol casi perfecto. Mientras tanto usted podr\u00eda dibujar una casa con una chimenea, para despu\u00e9s programar el humo que se elevar\u00eda hacia el cielo. \u00bfLo intentar\u00e1s\u2026?<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Escrito por ZorphDark<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando aplicamos las ventajas de la orientaci\u00f3n a objetos a los MovieClip de Adobe Flash, nuestros conceptos sobre<\/p>\n","protected":false},"author":2,"featured_media":119,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59,36],"tags":[88,38],"class_list":["post-235","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigos","category-proyecto-blackhat","tag-codigos","tag-proyecto-blackhat"],"_links":{"self":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=235"}],"version-history":[{"count":1,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/235\/revisions"}],"predecessor-version":[{"id":236,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/235\/revisions\/236"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/media\/119"}],"wp:attachment":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}